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
原创粉丝点击