N皇后问题算法
2009-03-26 12:42
246 查看
N皇后问题 8皇后问题 算法 c++
在一个8×8(n×n)国际象棋盘上,有8个皇后,每个皇后占一格;要求皇后间不会出现相互“攻击”的现象,即不能有两个皇后处在同一行、同一列或同一对角线上。
在一个8×8(n×n)国际象棋盘上,有8个皇后,每个皇后占一格;要求皇后间不会出现相互“攻击”的现象,即不能有两个皇后处在同一行、同一列或同一对角线上。
#include <iostream> using namespace std; int n; int *result; bool find(int); bool put(int, int); int main() { cout << "input n:" << endl; cin >> n; result = new int[n+1]; for (int i = 1; i <= n; ++i) result[i] = 0; if(find(1)) { //输出结果 for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) if (result[i] ==j) cout << "■"; else cout << "□"; cout << endl; } } else cout << "No solution!" << endl; return 0; } bool find(int i) { for (int j = 1; j <= n; ++j) { if (put(i,j)) { result[i] = j; if (i == n) return true; else if (find(i + 1)) return true; else result[i] = 0; } } return false; } //(i,j)点是否可以放子 bool put(int i, int j) { for (int k = 1; k < i; ++k) if (j == result[k] || i + j == k + result[k] || i - j == k - result[k] ) return false; return true; }
相关文章推荐
- 〖編程·C++〗回溯算法:排列树 - N皇后问题
- 中国象棋程序的设计与实现(六)--N皇后问题的算法设计与实现(源码+注释+截图)
- 算法学习记录 N皇后问题 递归解法
- 算法进化历程之“n皇后问题”
- 算法系列——N皇后问题
- leetcode:N-Queens (n皇后问题) 【面试算法题】
- 算法-回溯法初探-n皇后问题
- 遗传算法解N皇后问题
- 回溯算法之N皇后问题的求解
- 经典回溯算法之N皇后问题
- 回溯算法基础---皇后问题,骑士游历,迷宫求解
- 八皇后(N皇后)问题算法程序(回溯法)
- 八皇后(N皇后)问题算法程序(回溯法)
- 【算法分析】回溯法解八皇后问题(n皇后问题)
- 国际象棋“皇后”问题的回溯算法[C#源码分析]
- 算法 N皇后问题
- 回溯算法n皇后问题
- JAVA使用回溯法解决n皇后问题的算法
- lv 算法与回溯法相结合解决n皇后问题
- 国际象棋“皇后”问题的回溯算法