hdu 2553(N皇后)

来源:互联网 发布:水印素材软件 编辑:程序博客网 时间:2024/06/06 20:21

点击打开链接


//N皇后问题//N*N的棋盘,放N个皇后,要求不同行,不同列,不在对角线上//求有多少中放置方法//#include"stdio.h"#include"string.h"#include"math.h"#define N 12int A[N];int T[N];int ans;int n;int judge(int x){int i;//判断前面受否有与其同列或同对角线for(i=1;i<x;i++){if(T[i]==T[x]||abs(i-x)==abs(T[i]-T[x]))return 0;}return 1;}//找第t行的皇后放在什么位置即哪列void dfs(int t){int i;if(t>n)ans++;else {for(i=1;i<=n;i++){T[t]=i;//第t个数放在第i列if(judge(t))dfs(t+1);}}}int main(){int i;for(i=1;i<=N;i++){ans=0;n=i;memset(T,0,sizeof(T));dfs(1);A[i]=ans;}while(scanf("%d",&n)!=-1&&n)printf("%d\n",A[n]);return 0;}


原创粉丝点击