N皇后
来源:互联网 发布:大承网络 编辑:程序博客网 时间:2024/05/22 13:16
#include<iostream>#include<cstring>using namespace std;int n,tot;int vis[3][100],C[20];void search(int cur)//cur代表行{ int i,j; if(cur==n) { tot++; for(i=0; i<n; i++) { for(j=0; j<n; j++) if(C[i]==j) cout<<"1"<<" "; else cout<<"0"<<" "; cout<<endl; } cout<<endl; } else { for(i=0; i<n; i++)//代表列 { if(!vis[0][i]&&!vis[1][cur+i]&&!vis[2][cur-i+n])//不在同一列,同一副对角线,同一主对角线 { vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=1; C[cur]=i; //用于打印 search(cur+1); vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=0; } } }}int main(){ while(cin>>n) { tot=0; memset(vis,0,sizeof(vis)); memset(C,0,sizeof(C)); search(0); cout<<tot<<endl; }}
0 0