Napisz program rozwiązujący problem ośmiu hetmanów i wyświetlający liczbę wszystkich możliwych ustawień hetmanów dla planszy wielkości n x n. Działanie programu przetestuj dla planszy o wymiarach 8 x 8.
Specyfikacja problemu:
Dane:
n – liczba naturalna
Wynik:
licznik – liczba naturalna
RBXVv7feUtT24
Przykładowe rozwiązanie zadania:
Linia 1. import java kropka lang kropka Math średnik.
Linia 3. public class Main otwórz nawias klamrowy.
Linia 4. public static int otwórz nawias kwadratowy zamknij nawias kwadratowy h znak równości new int otwórz nawias kwadratowy 9 zamknij nawias kwadratowy średnik.
Linia 5. public static int licznik znak równości 0 średnik.
Linia 6. public static int n znak równości 8 średnik.
Linia 8. public static void hetman otwórz nawias okrągły int wiersz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny znak równości n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. if otwórz nawias okrągły h otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 11. boolean czyAtakowane znak równości false średnik.
Linia 13. for otwórz nawias okrągły int j znak równości 1 średnik j otwórz nawias ostrokątny znak równości n średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 14. if otwórz nawias okrągły h otwórz nawias kwadratowy j zamknij nawias kwadratowy wykrzyknik znak równości 0 ampersant ampersant otwórz nawias okrągły Math kropka abs otwórz nawias okrągły i minus j zamknij nawias okrągły znak równości znak równości Math kropka abs otwórz nawias okrągły wiersz minus h otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 15. czyAtakowane znak równości true średnik.
Linia 16. zamknij nawias klamrowy.
Linia 17. zamknij nawias klamrowy.
Linia 19. if otwórz nawias okrągły wykrzyknik czyAtakowane zamknij nawias okrągły otwórz nawias klamrowy.
Linia 20. h otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości wiersz średnik.
Linia 22. if otwórz nawias okrągły wiersz otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 23. hetman otwórz nawias okrągły wiersz plus 1 zamknij nawias okrągły średnik.
Linia 24. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 25. licznik plus plus średnik.
Linia 26. zamknij nawias klamrowy.
Linia 28. h otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 0 średnik.
Linia 29. zamknij nawias klamrowy.
Linia 30. zamknij nawias klamrowy.
Linia 32. zamknij nawias klamrowy.
Linia 33. zamknij nawias klamrowy.
Linia 35. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 36. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny znak równości n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 37. h otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 0 średnik.
Linia 38. zamknij nawias klamrowy.
Linia 39. hetman otwórz nawias okrągły 1 zamknij nawias okrągły średnik.
Linia 41. System kropka out kropka println otwórz nawias okrągły licznik zamknij nawias okrągły średnik.
Linia 43. zamknij nawias klamrowy.
Linia 44. zamknij nawias klamrowy.
31
Ćwiczenie 2
Napisz program wyświetlający ustawienie nieatakujących się n hetmanów dla sytuacji, w której dwa hetmany mają ustalone już swoje pozycje. Przetestuj program dla 8 hetmanów, z których dwa mają następujące współrzędne: (x1,y1) = (1,8) (x2,y2) = (8,5)
Specyfikacja problemu:
Dane:
n – liczba naturalna
(x1, y1) – para liczb naturalnych dodatnich
(x2, y2) – para liczb naturalnych dodatnich
Wynik:
Na standardowym wyjściu wyświetlany jest ciąg liczb naturalnych będący kodem znalezionego ustawienia hetmanów; i-ta cyfra oznacza numer wiersza, na którym znajduje się hetman w i-tej kolumnie.
R13EINBDstpoG
Przykładowe rozwiązanie zadania:
Linia 1. import java kropka lang kropka Math średnik.
Linia 3. public class Main otwórz nawias klamrowy.
Linia 4. public static int otwórz nawias kwadratowy zamknij nawias kwadratowy h znak równości new int otwórz nawias kwadratowy 9 zamknij nawias kwadratowy średnik.
Linia 5. public static int n znak równości 8 średnik.
Linia 7. public static void hetman otwórz nawias okrągły int wiersz zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. int x1 znak równości 1 przecinek y1 znak równości 8 średnik.
Linia 9. int x2 znak równości 8 przecinek y2 znak równości 5 średnik.
Linia 11. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny znak równości n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 12. if otwórz nawias okrągły h otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 13. boolean czyAtakowane znak równości false średnik.
Linia 15. for otwórz nawias okrągły int j znak równości 1 średnik j otwórz nawias ostrokątny znak równości n średnik j plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. if otwórz nawias okrągły h otwórz nawias kwadratowy j zamknij nawias kwadratowy wykrzyknik znak równości 0 ampersant ampersant otwórz nawias okrągły Math kropka abs otwórz nawias okrągły i minus j zamknij nawias okrągły znak równości znak równości Math kropka abs otwórz nawias okrągły wiersz minus h otwórz nawias kwadratowy j zamknij nawias kwadratowy zamknij nawias okrągły zamknij nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. czyAtakowane znak równości true średnik.
Linia 18. zamknij nawias klamrowy.
Linia 19. zamknij nawias klamrowy.
Linia 21. if otwórz nawias okrągły wykrzyknik czyAtakowane zamknij nawias okrągły otwórz nawias klamrowy.
Linia 22. h otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości wiersz średnik.
Linia 24. if otwórz nawias okrągły wiersz otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 25. hetman otwórz nawias okrągły wiersz plus 1 zamknij nawias okrągły średnik.
Linia 26. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 27. if otwórz nawias okrągły h otwórz nawias kwadratowy x1 zamknij nawias kwadratowy znak równości znak równości y1 ampersant ampersant h otwórz nawias kwadratowy x2 zamknij nawias kwadratowy znak równości znak równości y2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 28. for otwórz nawias okrągły int k znak równości 1 średnik k otwórz nawias ostrokątny znak równości n średnik k plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 29. System kropka out kropka print otwórz nawias okrągły h otwórz nawias kwadratowy k zamknij nawias kwadratowy zamknij nawias okrągły średnik.
Linia 30. zamknij nawias klamrowy.
Linia 31. zamknij nawias klamrowy.
Linia 32. zamknij nawias klamrowy.
Linia 34. h otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 0 średnik.
Linia 35. zamknij nawias klamrowy.
Linia 36. zamknij nawias klamrowy.
Linia 38. zamknij nawias klamrowy.
Linia 39. zamknij nawias klamrowy.
Linia 41. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 42. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny znak równości n średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 43. h otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości 0 średnik.
Linia 44. zamknij nawias klamrowy.
Linia 45. hetman otwórz nawias okrągły 1 zamknij nawias okrągły średnik.
Linia 47. zamknij nawias klamrowy.
Linia 48. zamknij nawias klamrowy.