57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
#include "fcpp.hh"
|
|
#include <string>
|
|
|
|
const int board_size = 8; // globale Konstante
|
|
typedef int columns[board_size]; // neuer Datentyp "columns"
|
|
|
|
bool good_position (int new_row, columns queen_cols, int new_col)
|
|
{
|
|
for (int row=0; row<new_row; row=row+1)
|
|
if ((queen_cols[row] == new_col) ||
|
|
(new_row-row == abs(queen_cols[row]-new_col)))
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
void display_board (columns queen_cols)
|
|
{
|
|
for (int i=0; i<board_size; i=i+1)
|
|
{
|
|
std::string s("");
|
|
for (int j=0; j<board_size; j=j+1)
|
|
if (j!= queen_cols[i])
|
|
s = s + ".";
|
|
else
|
|
s = s + "D";
|
|
print(s);
|
|
}
|
|
print(" ");
|
|
}
|
|
|
|
int queen_configs (int row, columns queen_cols)
|
|
{
|
|
if (row == board_size) {
|
|
display_board (queen_cols);
|
|
return 1;
|
|
}
|
|
else {
|
|
int nr_configs = 0;
|
|
for (int col=0; col<board_size; col=col+1)
|
|
if (good_position (row, queen_cols, col))
|
|
{
|
|
queen_cols[row] = col;
|
|
nr_configs = nr_configs +
|
|
queen_configs (row+1, queen_cols);
|
|
}
|
|
return nr_configs;
|
|
}
|
|
}
|
|
|
|
int main ()
|
|
{
|
|
columns queen_cols;
|
|
print("Anzahl Loesungen");
|
|
print(queen_configs(0,queen_cols));
|
|
return 0;
|
|
}
|