Skoczek na szachownicy

0

Witam potrzebuje pomocy w napisaniu programu , który będzie znajdował drogę skoczka szachowego na szachownicy (skoczek musi znalezc sie na wszystkich polach bedac na danym polu tylko jeden raz).

  • n=5..10 tu rozmiar tablicy
  • tablica 2 wymiarowa , ktora napierw wypelniam zerami a potem wstawiam do tablicy kolejne wartosci

do uzycia algorytm metody przeszukiwania
Dane wejsciowe:

-wybor n
-wybor punktu.poczatkowego

Dane wyjsciowe:
-rozwiazania(wyswietlenie tablicy)
-ilosc wykonanych ruchów
np. (1,1) -> (3,2)->(5,3)->(,) itd
.

Wiem ze trzeba uzyc rekurencji, bo podczas cofania musimy czyscic dane pole.

W pseudokodzie wychodzi mi na razie cos takiego:
St = stan.poczatkowy
While (st = stan.koncowy)
{opdozw <- wybier dozwolona operacje w St
St <- wynik dla op

{x=x+-2
{y=y+-1

{x=x+-1
{y=y+-2

Czy jest tu Osoba na forum , która pomogła by mi zapisać poniższy problem w języku C++ .Chodzi o zastosowanie dobrego i nieskomplikowanego algorytmu.
Z góry dziękuje za zainteresowanie.

0

Stwórz tablicę bool Pola[8][8], ustaw wszystkie jej pola na false. Po wybraniu początkowej wartości x,y ustaw dane pole na true. Zamiast rekurencji zrób sobie pętle while, użyj zmiennej pomocniczej, która będzie odpowiedzialna za ilość pól już użytych, pętla się kończy gdy zmienna == 64 i zarazem wszystkie pola tablicy true. Jeśli zależy Ci na rekurencji to zamień gotowy działający kod na rekurencyjny.

edit:
Mam przed sobą szachownicę i tak sobie kombinuję, zastanawiam się, czy aby na pewno można wykonać 64 ruchy skoczkiem (i ani ruchu więcej) żeby spełnić podane przez Ciebie założenie ;> tj. 64 ruchy i skoczek na każdym polu tylko raz, oblecieć wszystkie pola

0

@macbaz przeciez to jest tak klasyczny problem że aż głowa boli. Masz w internecie 1000 gotowych kodów i algorytmów...
google: Knight's tour

0

No jakoś nie moge znaleźć przykładu w miare prostego kodu takiego skoczka...

0

Bo takowy nie istnieje. Albo to będzie coś strasznie nagromadzonego, albo skomplikowane struktury danych. Tak czy owak dopóki nie nauczysz się programować - żadnego z nich nie zrozumiesz.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.