第5章 回溯法,n皇后问题
2013-04-23 16:54
211 查看
#include <iostream> #include <cstdio> using namespace std; #define MAXN 10 int n; //皇后数,棋盘大小 int q[MAXN]; //放置的皇后的位置,q[i]表示:第i个皇后的位置在第i行,第q[i]列 int count; //可行方案数 bool IsPlaceable(int x, int y) { int i; for (i = 1; i < x; i++) { if (abs(i-x) == abs(q[i]-y) || q[i] == y) { return false; } } return true; } void Backtrack(int k) { if (k > n) { count++; /* printf("方法%d:\n", count); int i; for (i = 1; i <= n; i++) { printf("%d: %d %d\n", i, i, q[i]); } */ } else { int i; for (i = 1; i <= n; i++) { if (IsPlaceable(k, i)) { q[k] = i; Backtrack(k+1); } } } } int main(void) { while (scanf("%d", &n) != EOF) { count = 0; Backtrack(1); printf("%d\n", count); } return 0; }
相关文章推荐
- n皇后问题回溯法用swift实现
- 从N-皇后问题看回溯法
- 回溯法解决N皇后问题(以四皇后为例)
- N 皇后问题-回溯法
- 使用回溯法来解决n皇后问题
- 用回溯法解决皇后问题的实现思考
- 8皇后问题(回溯法)
- 回溯法解决N皇后问题(以四皇后为例)
- 用试探回溯法解决N皇后问题
- 回溯法之N皇后问题
- N皇后问题的回溯法实现
- 回溯法(scheme) -- N皇后问题
- 回溯法解决N皇后问题——递归与非递归求解
- HDU2553 N皇后问题【回溯法】
- 回溯法算法步骤&n皇后问题的详细程序(C++)
- 通过8皇后问题浅析回溯法的递归实现
- 回溯法解决n皇后问题
- 回溯法解决N皇后问题(以四皇后为例)
- 回溯法 解 n皇后问题
- 八皇后问题-回溯法