1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #include <iostream> #include <math.h> using namespace std; #define QUEEN 8 int board[QUEEN] = {0}; void Print() { static int count = 0; cout << "Solve #" << ++count << ':' << endl; for (int line = 0; line < QUEEN; ++line) { for (int col = 0; col < QUEEN; ++col) { if (board[line] == col) cout << "●"; else cout << "○"; } cout << endl; } cout << endl; } bool Check(int line) { for (int y = 0; y < line; ++y) if (board[y] == board[line] || abs(board[y] - board[line]) == abs(y - line)) return false; return true; } void Put(int line) { if (line >= QUEEN) { Print(); return; } for (int col = 0; col < QUEEN; ++col) { board[line] = col; if (Check(line)) Put(line + 1); } } int main() { Put(0); }
|