Für Vorlesungen, bitte die Webseite verwenden. https://flavigny.de/lecture
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

57 строки
1.2KB

  1. #include "fcpp.hh"
  2. #include <string>
  3. const int board_size = 8; // globale Konstante
  4. typedef int columns[board_size]; // neuer Datentyp "columns"
  5. bool good_position (int new_row, columns queen_cols, int new_col)
  6. {
  7. for (int row=0; row<new_row; row=row+1)
  8. if ((queen_cols[row] == new_col) ||
  9. (new_row-row == abs(queen_cols[row]-new_col)))
  10. return false;
  11. return true;
  12. }
  13. void display_board (columns queen_cols)
  14. {
  15. for (int i=0; i<board_size; i=i+1)
  16. {
  17. std::string s("");
  18. for (int j=0; j<board_size; j=j+1)
  19. if (j!= queen_cols[i])
  20. s = s + ".";
  21. else
  22. s = s + "D";
  23. print(s);
  24. }
  25. print(" ");
  26. }
  27. int queen_configs (int row, columns queen_cols)
  28. {
  29. if (row == board_size) {
  30. display_board (queen_cols);
  31. return 1;
  32. }
  33. else {
  34. int nr_configs = 0;
  35. for (int col=0; col<board_size; col=col+1)
  36. if (good_position (row, queen_cols, col))
  37. {
  38. queen_cols[row] = col;
  39. nr_configs = nr_configs +
  40. queen_configs (row+1, queen_cols);
  41. }
  42. return nr_configs;
  43. }
  44. }
  45. int main ()
  46. {
  47. columns queen_cols;
  48. print("Anzahl Loesungen");
  49. print(queen_configs(0,queen_cols));
  50. return 0;
  51. }