// Non-deterministic in the right sense, but can't be done. #include using namespace std; void print(int board[]) { for (int r = 0; r < 8; r += 1) { for (int c = 0; c < 8; c += 1) if (board[r] == c) cout << "X"; else cout << "-"; cout << "\n"; } cout << "\n"; } bool complete_all_ok(int board[]) { for (int r = 0; r < 8; r += 1) for (int i = 0; i < r; i += 1) if (board[i] == board[r]) return false; else if (i - board[i] == r - board[r]) return false; else if (i + board[i] == r + board[r]) return false; return true; } void put_queens(int board[]) { for (int r = 0; r < 8; r += 1) { choose board[r] = 0; or board[r] = 1; or board[r] = 2; or board[r] = 3; or board[r] = 4; or board[r] = 5; or board[r] = 6; or board[r] = 7; } if (complete_all_ok(board)) print(board); else fail; } int main(int argc, char * argv[]) { int * board = new int[8]; put_queens(board); delete [] board; }