(dfs)洛谷 P1219 八皇后

最近开始想刷题了,一开始刷的是leetcode,不过刷得不太过瘾,所以想先来复习复习基础,把洛谷基础题都刷一遍。

题目地址:https://www.luogu.org/problemnew/show/P1219
题意:八皇后问题

思路:dfs

#include
#include
using namespace std;

const int MAXN=100;
int check[3][MAXN];//0表示colum,1表示反对角,2表示主对角
int ans[MAXN];

int sum=0;
int n;

void dfs(int q)
{
    if(q>n)
    {
        sum++;
        if(sum<=3)
        {
            for(int i=1;i<=n;i++)
                printf("%d ",ans[i]);
            printf("\n");
        }
        return;
    }
    for(int j=1;j<=n;j++)
    {
        if(!check[0][j]&&!check[1][q+j]&&!check[2][q-j+n])
        {
            check[0][j]=1;
            check[1][q+j]=1;
            check[2][q-j+n]=1;
            ans[q]=j;
            dfs(q+1);
            check[0][j]=0;
            check[1][q+j]=0;
            check[2][q-j+n]=0;
        }
    }

}
int main()
{
    cin>>n;
    dfs(1);
    cout<<sum<<endl;
    return 0;
}

你可能感兴趣的:(1.8.2,DFS)