N皇后问题(位运算)

xiaoxiao2021-02-27  333

描述 会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 在国际象棋棋盘上放置N个皇后,要求输出放置方案总数。 输入 皇后个数。 输出 放置的方案总数。 源代码如下:

#include<bits/stdc++.h> using namespace std; int n,ans=0; int dfs(int row,int ld,int rd) { int lim=(1<<n)-1; int p,pos; if(row!=lim) { pos=lim&~(row|ld|rd); while(pos) { p=pos&-pos; pos-=p; dfs(row+p,(ld+p)<<1,(rd+p)>>1); } } else ans++; } int main() { cin>>n; dfs(0,0,0); cout<<ans; }
转载请注明原文地址: https://www.6miu.com/read-3315.html

最新回复(0)