Na wstępie zaznaczę, że jestem w programowaniu zielony, znam minimalne podstawy.
"dziś na zajęciach w szkole otrzymaliśmy zadanie : stworzyć program, który rozwiązywałby sudoku na planszy 9x9. Najlepiej z użyciem rekurencji.
Czy ktoś mógłby mi podpowiedzieć/pomóc w napisaniu/wytłumaczyć jak to zrobić, lub chociaż na podstawie istniejącego programu wytłumaczyć mi mniej więcej na czym to polega." takie pytanie zadałem na jakimś forum.
W odpowiedzi otrzymałem, że :
Tak więc wziąłem się do roboty. I... nie wiem jak obejść conio.h. Ktoś mi może pomóc ? I przy okazji, nie za bardzo wiem jak użyć rekurencji w podanym wyżej szablonie. Na końcu gdy wszystkie 'pojedyncze' liczby zostaną wstawione program miałby odwołać się do tych liczb i co dalej ?Metoda siłowa:
1. Sprawdź ile liczb może być w danej komórce, jeśli tylko jedna, to będzie ta poprawna. Szukasz w danym kwadracie, w pionie i poziomie.
2. Dla każdego wiersza, kolumny i kwadratu wyznaczasz jakich liczb brakuje. Jeśli dana brakująca liczba może wystąpić tylko na jednym polu w danym wierszu/kolumnie/kwadracie, wpisujesz ją. Rekurencja jest potrzebna, gdy trzeba zgadywać, bo żadna z wyżej wymienionych metod nie znalazła żadnego rozwiązania. Ogólny szablon rozwiązania:rozwiąż:
dopóki nierozwiązana:
zrobiono=nie
dla każdej komórki:
sporządź listę możliwych liczb do wstawienia
jeśli ta lista ma tylko jedną liczbę - wstaw ją, zrobiono=tak
dla każdego wiersza/kolumny/kwadratu:
sprawdź brakujące liczby i na jakich komórkach mogą wystąpić
jeśli dana brakująca liczba może wystąpić tylko na jednym polu w danym wierszu/kolumnie/kwadracie, wypełnij, zrobiono=tak
jeśli zrobiono=nie:
skopiuj planszę i uzupełnij jedno pole jakimś możliwym rozwiązaniem
rozwiąż skopiowaną planszę
rozwiązana poprawnie? zakończ
rozwiązana niepoprawnie? skopiuj planszę jeszcze raz i uzupełnij innym możliwym rozwiązaniem
rozwiązana poprawnie?
wypisz planszę, zakończ z komunikatem "poprawny"
rozwiązanie niepoprawne?
zakończ z komunikatem "błędny"
Z góry dzięki za pomoc,
Pozdrawiam serdecznie.