Biorąc pod uwagę rozmiar szachownicy i początkową pozycję rycerza, oblicz prawdopodobieństwo, że po k
ruchach rycerz znajdzie się na szachownicy.
Uwaga:
Rycerz wykonuje wszystkie 8 możliwych ruchów z jednakowym prawdopodobieństwem.
Gdy rycerz znajdzie się poza szachownicą, nie może wrócić do środka.
Wejście
Dane wejściowe są oddzielone przecinkami w postaci:
l,k,x,y
gdzie l
jest długość i szerokość szachownicy, k
liczba ruchów, które wykona rycerz, x
pozycja x pozycji początkowej rycerza i y
pozycja y pozycji początkowej rycerza. Zauważ, że 0,0
jest to lewy dolny róg planszy i l-1,l-1
prawy górny róg planszy.
Algorytm:
Zacznij od początkowych współrzędnych rycerza. Wykonaj wszystkie możliwe ruchy dla tej pozycji i pomnóż je z prawdopodobieństwem, dla każdego ruchu rekurencyjnie wywołaj funkcję kontynuuj ten proces do momentu spełnienia warunku zakończenia. Warunkiem zakończenia jest sytuacja, gdy rycerz znajduje się poza szachownicą, w tym przypadku zwróć 0 lub pożądana liczba ruchów zostanie wyczerpana, w tym przypadku zwróć 1.
Jak widzimy, aktualny stan rekurencji zależy tylko od bieżących współrzędnych i liczby wykonanych do tej pory kroków. Dlatego możemy zapamiętać te informacje w formie tabelarycznej.
Kredyt
Wyzwanie to pochodzi z postu na blogu crazyforceode.com opublikowanego na licencji CC BY-NC-ND 2.5 IN . Został nieco zmodyfikowany, aby uczynić go nieco trudniejszym.