Na ile sposobów mógł paść wynik

0

Chcę napisać program, który poda mi na ile sposobów może paść wynik meczu. Założenie jest takie, że gospodarze pierwsi obejmują prowadzenie i utrzymują je przez cały mecz. Podaje np. wynik 4:1 wtedy jedną z możliwości jest po prostu 1:0, 2:0, 3:0, 4:0, 4:1, 4:2 ale jak wyznaczyć wszystkie możliwości? Zrobiłem to jakoś ale mój sposób nie działa za dobrze więc jeśli ktoś ma jakiś pomysł albo widział gdzieś podobny algorytm to proszę o pomoc.

0

16

padło 5 goli. każdy gol mogła strzelić drużyna a lub drużyna b. więc jest to kombinacja z powtórzeniami. wynik : 2^5 = 32. ale odrzucamy możliwość, że pierwszy gol strzeliła drużyna B, więc wynik dzielimy przez 2.

0
rafal__ napisał(a)

16

padło 5 goli. każdy gol mogła strzelić drużyna a lub drużyna b. więc jest to kombinacja z powtórzeniami. wynik : 2^5 = 32. ale odrzucamy możliwość, że pierwszy gol strzeliła drużyna B, więc wynik dzielimy przez 2.

ups. pomyłka :D
to by działało, gdybyśmy nie mieli ustalonego wyniku.
poprawny wynikiem będzie 4!/(3!*1!) = 4 (permutacja z powtórzeniami). dawno matmy nie miałem, a kombinatoryka zawsze mi się myliła

1:0;2:0;3:0;4:0;4:1
1:0;2:0;3:0;3:1;4:1
1:0;2:0;2:1;3:1;4:1
1:0;1:1;2:1;3:1;4:1

0

Ale to nie jest wzór działający dla wszystkich możliwości bo jak by było np 2:1 to jaki on będzie 2!/(1!-1!)? jak on się przedstawia na zmiennych? Załóżmy, że mamy wynik a:b to twój wzór wygląda a!((a-1)!*b!)?

A i nie tylko odrzucamy możliwość, że pierwszego gola strzeliła drożyna B ale drugiego też bo jak nie to możne paść choc przez chwile remis a drożyna A ma prowadzić cały mecz...

0
Giks napisał(a)

Ale to nie jest wzór działający dla wszystkich możliwości bo jak by było np 2:1 to jaki on będzie 2!/(1!-1!)? jak on się przedstawia na zmiennych? Załóżmy, że mamy wynik a:b to twój wzór wygląda a!((a-1)!*b!)?

A i nie tylko odrzucamy możliwość, że pierwszego gola strzeliła drożyna B ale drugiego też bo jak nie to możne paść choc przez chwile remis a drożyna A ma prowadzić cały mecz...

nie 2!/(1!-1!), ale 2!/(1!*1!) czyli 2:
0:0;1:0;2:0;2:1
0:0;1:0;1:1;2:1

a tego, że odrzucamy możliwość remisu, nie doczytałem... czyli mój wzór nie działa

0

No niestety nie działa nie wiem czy to się da zapisać poprzez wzór czy chyba jednak trzeba algorytmem...

0

Mój algorytm działa tak, że jest pętla wykonująca się aż osiągniemy pożądany wynik. W pętli są warunki które odpowiednio sterują przyznawaniem goli i tak:
Najpierw dają gola drużynie A jest 1:0 pętla przelatuje sprawdza czy tego wyniku szukałem jeśli nie wykonuje się jeszcze raz(szukam wyniku 4:1). Daje więc kolejnego gola drużynie A jest 2:0. Pętla wykonuje się jeszcze raz mam teraz dwie możliwości albo dodać gola drużynie A albo drużynie B zwiększam więc k (oznaczające ilość możliwości i na początku wynoszące 1) do 2 i rekurencyjnie wywołuje tą samą procedurę dla wyniku 2:1 problem w tym, że program powykonuje te wszystkie rekurencje ale nie podkańcza pętle tzn. Gdy wywołałem rekurencje na wyniku 2:0 to potem powinna pętla się dokończyć polecieć 3:0 itd. A tak się nie dzieje nie wiem jak to rozwiązać.

0

Mam wrażenie, że tak:

    int policz(int a,int b)
    {
        if(a<=b)
            return 0;
        if(b==0)
            return 1;
        if(a<=2)
            return 1;
        return policz(a-1,b)+policz(a,b-1);
    }
0

To chyba na prawdę działa dzięki wielkie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1