Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //na tym polega zadanie 1, yo !
- void hetmiani(int n, int k, bool *tab){
- // n - rozmiar, k - numer wiersza, tab - tablica reprezentujaca szachownice
- for(int i=0;i<n;i++){ // lecimy od poczatku do konca wiersza
- if(pole na szachownicy nie szachuje sie z innymi)
- tab[i][k]=true;//lub [k][i] tak naprawde zalezy jak bedzie sie rozpatrywac sobie w glowie tablice
- if(k==n-1)
- //wypisujemy wyniki i konczymy prace podprogramu
- else{
- hetmaini(n,k+1,tab)
- tab[i][k]=false;
- /* teraz w tym elsie chodzi o to ze gdy juz ustalimy dobre pole w danym wierszu mamy 2 wyjscia
- albo ten wiersz byl wierszem ostanim i wychodzimy, albo przechodzimy do nastepnego wiersza
- wywolujac dla niego hetmaini(n,k+1,tab), wazne jest ze metoda zatrzymuje swoje dzialanie i
- pamieta stan sprawdzanego pola tj. "i" dla ktorego znalazl wolne pole i tym samym na ktorym
- zakonczyl sprawdzanie, w wypadku kiedy nie znajdziemy wolnego pola w wierszu tj. petla for
- przeleci do konca znajdziemy sie dokladnie w miejscu po wywolaniu hetmaini(n,k+1,tab), pole
- ktore wybralismy wraca do swojego poprzedniego stanu a my kontynuujemy sprawdzanie wolnych pol
- od nastepnego, a w razie co cofamy sie do poprzedniego wiersza itd itd. na tym polega wlasnie
- backtracking wykorzystany w tym algorytmie, pozatym role "k" i "i" jako wiersza i kolumny moga
- byc przemienne co pisalem tez wyzej. Napisanie tego zadania sprowadza sie do sprawdzania
- szachowania oraz odpowiedniej selekcji mozliwych pol znanych z danych wejsciowych */
- }
- // kod by J. Krzaczkowski, zapisany przeze mnie
- }
- }
Add Comment
Please, Sign In to add comment