Guest User

Untitled

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