N皇后问题 深搜-dfs
2013-05-29 19:16
513 查看
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2553 N皇后问题是搜索中的经典问题,在N*N的棋盘上放N个皇后,使得每行每列每条对角线上没有两个棋子。
#include <iostream> using namespace std; int visit[11]; //记录行是否有遍历过 int line_map[11]; //记录每行,占的列位置 int count; void dfs(int k ,int n) { int flag = 0; if(k == n+1) { count++; return ; } for(int j=1;j<=n;j++) { if(visit[j]==0) //not visit;make sure the two point will not in direct line { line_map[k] = j; flag = 0; for(int i = 1; i<k ;i++) //循环前k-1个是否有违反规则的 { if(abs(line_map[k]-line_map[i]) == abs(k-i)) //是否在一条斜线上 { flag = 1; break; } } if(flag ==0) { visit[j] = 1; dfs(k+1,n); visit[j] = 0; //回溯 } } } } int main() { int i,j,n; int ans[11]; for(i =1 ;i<11;i++) { memset(visit,0,sizeof(visit)); memset(line_map,0,sizeof(line_map)); count = 0; dfs(1,i); ans[i] = count; } while(scanf("%d",&n),n) { printf("%d\n",ans ); } return 0; }
相关文章推荐
- N-Queens N皇后问题 DFS
- N皇后问题<DFS>
- hdu 2553 N皇后问题 (经典DFS)
- hdu 2553 N皇后问题(dfs+回溯)
- DFS之皇后问题
- 八皇后问题-回溯-DFS
- DFS解决n皇后问题
- code【vs】1295 N皇后问题(dfs(回溯))
- hdu 2553:N皇后问题(DFS遍历,水题)
- N皇后问题(DFS)N皇后问题
- DFS--N皇后问题
- 用深度优先搜索(DFS)(回溯法)解决N皇后问题(Leetcode 51)
- dfs n皇后问题
- POJ 1321 棋盘问题类似八皇后 dfs搜索
- hdu2533:N皇后问题(dfs)
- hdu2553 N皇后问题(回溯dfs)
- 【POJ】1321-棋盘问题 n皇后、dfs
- dfs棋盘问题,皇后 POJ1321
- HDU 2553 N皇后问题 深搜-dfs
- HDU 2553 N皇后问题 (DFS_回溯)