您的位置:首页 > 产品设计 > UI/UE

LeetCode--N-Queens II

2017-09-01 10:46 204 查看
Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.



思路:回溯法。由于不用放置整个棋盘上的元素,所以类似数独那一题,只用判断列和两个对角线是否可以放置即可。还是深度优先搜索,逐行逐列的放置,当最后一行也可以放置时计数加1。

class Solution {
public:
int totalNQueens(int n) {
vector<bool>col(n,true);
vector<bool>main(2*n-1,true);
vector<bool>anti(2*n-1,true);
int count=0;
dfs(0,count,n,col,main,anti);
return count;
}
void dfs(int i,int &count,int n,vector<bool>&col,vector<bool>&main,vector<bool>&anti){
if(i==n){
count++;
return;
}
for(int j=0;j<n;j++){
if(col[j]&&main[i+j]&&anti[i+n-1-j]){
col[j]=main[i+j]=anti[i+n-1-j]=false;
dfs(i+1,count,n,col,mai
4000
n,anti);
col[j]=main[i+j]=anti[i+n-1-j]=true;
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: