na ile sposobów można otrzymać daną cyfrę,problem z algorytmem

0

Witam, mam do napisania program, nie proszę o kod, ale o pomoc w zrozumieniu jak skonstruować algorytm.
Treść:
Napisz program, który wyznacza ilość sposobów otrzymania w sumie n oczek przy sukcesywnym
rzucie kostką.
np. dla n=1 mamy jedno rozwiązanie, dla n=4 mamy osiem rozwiązań(np:4,31,13,22,112,121,211,1111).

1

Nie napisałeś o wymaganej złożoności, więc najprostszy rekurencyjny algorytm może tak wyglądać:

''rzut(n)
jeśli n < 0 kończ
jeśli n == 0 dodaj 1 do liczby rozwiązań i kończ
jeśli n > 0
rzut(n-1) // symulacja wyrzucenia 1
rzut(n-2) // symulacja wyrzucenia 2
rzut(n-3)
rzut(n-4)
rzut(n-5)
rzut(n-6)''

0
  1. LICZBA to nie to samo co CYFRA
  2. Zrób to analogicznie do wydawania reszty. Zrób tablicę [0..n] i w kolejnych indeksach zapisuj na ile sposobów możesz uzyskać taką liczbę.
    0 można uzyskać na 0 sposobów
    1 można uzyskać poprzez wyrzucenie 1
    2 można uzyskać poprzez wyrzucenie 2 a także poprzez wyrzucenie 1 dla każdego ze sposobów na wyrzucenie 1
    3 można uzyskać poprzez wyrzucenie 3 a także poprzez wyrzucenie 2 dla każdego ze sposobów na wyrzucenie 1 a także poprzez wyrzucenie 1 dla każdego ze sposobów na wyrzucenie 2
    ...
    6 można uzyskać poprzez wyrzucenie 6 a także poprzez wyrzucenie 5 dla każdego ze sposobów na wyrzucenie 1 a także poprzez wyrzucenie 4 dla każdego ze sposobów na wyrzucenie 2 a także....
    i można uzyskać poprzez wyrzucenie 6 dla każdego ze sposobów na wyrzucenie i-6 a także poprzez wyrzucenie 5 dla każdego ze sposobów na wyrzucenie i-5 a także...
    itd
    W efekcie tablica[i] = tablica[i-1]+tablica[i-2]+tablica[i-3]+...+tablica[i-6]
    przy założeniu że i>5

Więc dla twojego przypadku:
tablica[4] = tablica[3]+tablica[2]+tablica[1]+tablica[0] = tablica[3]+tablica[2]+tablica[1] = (tablica[2]+tablica[1])+(tablica[1])+tablica[1] = (tablica[1]+tablica[1])+(tablica[1])+tablica[1] = 4*tablica[1] = 4
Wyliczasz sobie elementy tablicy od końca i voila, jak dojdziesz do tablica[n] to masz rozwiązanie

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