今早起来写了个N皇后
#include <iostream> #define abs(i) ((i) < 0 ? -(i) : (i)) const int N = 8; int board[N] = {-1}; bool ok(int row) { if (row == 0) return true; for (int i = 0; i < row; ++i) { if (((row - i) == abs(board[row] - board[i])) || board[row] - board[i] == 0 ) return false; } return true; } void dfs(int row) { if (row == N) { for (int i = 0; i < N; ++i) std::cout << board[i] << " "; std::cout << std::endl; } else { for (int i = 0; i < N; ++i) { board[row] = i; if (!ok(row)) continue; else dfs(row + 1); } } } int main() { dfs(0); return 0; }
一次成功,娃哈哈