题解 | #N皇后问题#
N皇后问题
https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6
class Solution {
public:
/**
*DFS深度优先搜索解决
*/
const int N=20;
int ans=0,size=0;
bool col[20]={0},dg[20]={0},udg[20]={0};
int Nqueen(int n) {
size=n;
dfs(0);
return ans;
}
void dfs(int x){
if(x==size){//满足答案,更新答案,并返回
ans++;
return;
}
for(int i=0;i<size;i++){//将棋盘按行读取
if(!col[i]&&!dg[x+i]&&!udg[-x+i+size]){
col[i]=dg[x+i]=udg[-x+i+size]=true;//更新状态
dfs(x+1);//递归
col[i]=dg[x+i]=udg[-x+i+size]=false;//恢复现场
}
}
}
};
