首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

HDU2553-N皇后有关问题(DFS)

2013-10-23 
HDU2553-N皇后问题(DFS)#includeiostream#includestring.h#includestdio.h#includectype.h#includ

HDU2553-N皇后问题(DFS)
#include<iostream>#include<string.h>#include<stdio.h>#include<ctype.h>#include<algorithm>#include<stack>#include<queue>#include<set>#include<math.h>#include<vector>#include<map>#include<deque>#include<list>#define MAXN 30using namespace std;int n,sum;bool vis[3][MAXN];void dfs(int p){ if(p==n) sum++; else for(int i=0; i<n; i++) if(!vis[0][i]&&!vis[1][p+i]&&!vis[2][p-i+n]) { vis[0][i]=vis[1][p+i]=vis[2][p-i+n]=1; dfs(p+1); vis[0][i]=vis[1][p+i]=vis[2][p-i+n]=0; }}int main(){ int result[11]; for(n=1; n<=10; n++) { memset(vis,0,sizeof(vis)); sum=0; dfs(0); result[n]=sum; } while(scanf("%d",&n)&&n!=0) printf("%d\n",result[n]); return 0;}
生成的表:result[11] = {0,1,0,0,2,10,4,40,92,352,724};

所以、该题目打表就能过。

热点排行