Queen N

#include <cstdio>
#include <iostream>
using namespace std;
int a[100];
int ans=0, N=8;
bool b[100], c[100], d[100];//Horizontal and vertical, left diagonal, right diagonal

void dfs(int x)
{
    if(x > N)
    {
        years ++;
        return ;
    }
    for(int i=1; i<=N; i++)
    {
        if(!(b[i] || c[x+i] || d[x-i+N]))
        {
            b[i] = c[x+i] = d[x-i+N] = true;
            a[x] = i;
            dfs(x+1);
            b[i] = c[x+i] = d[x-i+N] = false;
        }
    }
}
intmain()
{
    dfs(1);
    cout << ans << endl;
    return 0;
}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325845920&siteId=291194637