restructure and add ipi texs
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user