P1219 [USACO1.5]八皇后 Checker Challenge - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
using namespace std;
int n,ans=0,a[14];
bool r[14],dig[1000],t_dig[1000],b[14];
int row=1;
void dfs(int x)
{
if(x>n)
{
ans++;
if(ans<=3)
{
for(int i=1;i<=n;i++)
cout << a[i] << " ";
cout << endl;
}
return;
}
for(int i=1;i<=n;i++)
{
if(!r[i] && !dig[i+x] && !t_dig[i-x+20])
{
r[i]=dig[i+x]=t_dig[i-x+20]= true;
a[x]=i;
dfs(x+1);
r[i]=dig[i+x]=t_dig[i-x+20]= false;
}
}
}
int main()
{
cin >> n;
dfs(1);
cout << ans;
}