#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 发布
本文介绍了一种使用位运算和递归深度优先搜索解决N皇后问题的方法。通过定义特定的位操作来避免皇后间的冲突,实现了高效求解不同规模棋盘上的皇后放置方案。
672

被折叠的 条评论
为什么被折叠?



