hdu2553 N皇后问题

来源:互联网 发布:yoast seo设置 编辑:程序博客网 时间:2024/05/01 21:52

hdu2553

N皇后问题

//hdu2553 #include<iostream>#include<cstdio>#include<cstring>using namespace std;#define MAX 11int ans,n;struct Map{int x;int y;};Map map[MAX];void dfs(int cont){if(cont==n){ans++;return;}if(cont>n){return ;}int j,m;for(j=0;j<n;j++){//第cont个皇后的行号为cont for(m=0;m<cont;m++){if(map[m].y==j||map[m].x+map[m].y==cont+j||map[m].x-map[m].y==cont-j){break;}    }    if(m<cont)//当前皇后不能放在cont行j列         continue;map[cont].x=cont;    map[cont].y=j;    dfs(cont+1);}}int main(){int Queen[MAX];for(n=1;n<=10;n++){ans=0;for(int j=0;j<n;j++){//第一个放在第0行的某一列 map[0].x=0;map[0].y=j;int cont=1;dfs(cont);}Queen[n]=ans;} while(scanf("%d",&n)!=EOF&&n){printf("%d\n",Queen[n]);}return 0;} 


0 0