tyvj 1080 N皇后

来源:互联网 发布:抽奖活动中奖概率算法 编辑:程序博客网 时间:2024/06/04 19:10

题目链接:N皇后

按字典序算N皇后的前三组数据和总共多少组数据,直接按照N皇后去搜就可以了

#include <bits/stdc++.h>using namespace std;int n,ind,ans[100005][15],cs;bool row[15],dia1[100005],dia2[100005];void dfs(int q){    if(q > cs){        ind++;        for(int i = 1;i <= cs;i++)            ans[ind][i] = ans[ind-1][i];        return ;    }    for(int r = 1;r <= cs;r++){        if(row[r]&&dia1[r+q]&&dia2[cs-q+r]){            row[r] = dia1[r+q] = dia2[cs-q+r]=false;            ans[ind][q] = r;            dfs(q+1);            row[r] = dia1[r+q] = dia2[cs-q+r]=true;        }    }}int main(){    memset(row,true,sizeof(row));    memset(dia1,true,sizeof(dia1));    memset(dia2,true,sizeof(dia2));    ind = 1;    cin>>cs;    dfs(1);    for(int n = 1;n <= 3;n++){        for(int i = 1;i < cs;i++)            cout<<ans[n][i]<<" ";        cout<<ans[n][cs]<<endl;    }    cout<<ind-1<<endl;    return 0;}

0 0
原创粉丝点击