#include<bits/stdc++.h>
using namespace std;
int n,ans,lim;
int dfs(int row,int ld,int rd)
{
int pos;
if(row==lim) ans++;
else
{
pos=(lim) & ~(row|ld|rd);
while(pos)
{
int p=pos&(-pos);
pos-=p;
dfs(row+p,(ld+p)<<1,(rd+p)>>1);
}
}
}
int main()
{
cin>>n;
lim=(1<<n)-1;
dfs(0,0,0);
cout<<ans;
}
n皇后方案总数的位运算优化
最新推荐文章于 2024-07-15 07:45:00 发布