n皇后问题(回溯法)

来源:互联网 发布:snap linux 编辑:程序博客网 时间:2024/05/29 17:31



#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define maxn 10int n;bool vis[maxn];int sum;int c[maxn];bool check(int cur,int j){   if(vis[j])return false;   for(int i=0;i<cur;i++){    if(j-cur==c[i]-i||j+cur==c[i]+i)return false;   }   return true;}void dfs(int cur){     if(cur>=n){        sum++;        return ;     }     for(int i=0;i<n;i++){        if(check(cur,i)){            vis[i]=1;            c[cur]=i;            dfs(cur+1);            vis[i]=0;        }     }}int main(){    freopen("in.txt","r",stdin);    freopen("out.txt","w",stdout);    while(cin>>n){        memset(vis,0,sizeof vis);        sum=0;        dfs(0);        cout<<sum<<endl;    }}


0 0
原创粉丝点击