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

Leetcode52: N-Queens II

2016-10-27 19:25 316 查看
Follow up for N-Queens problem.

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



题意:

依然是N皇后问题,只不过在上次的八皇后问题中,是需要输出每个棋盘的布局的,而这一题只需要输出所有的解的数目即可。

解法:

同上一次的回溯法,非递归实现。代码部分也是将上次保存输出棋盘的部分改成直接计数就可。

代码:

<span style="font-size:14px;">class Solution {
public:
int mmin=-100000;

bool valid(int i, int j, int a[], int n){
for(int r=0; r<n; r++){
if(a[r]==j || abs(r-i)==abs(a[r]-j)){
return false;
}
}
return true;
}

int totalNQueens(int n) {
int count=0;
int a
;
for(int i=0; i<n; i++)
a[i]=mmin;
int i=0, j=0;
while(i<n){
while(j<n){
if(valid(i, j, a, n)==true){
a[i]=j;
j=0;
break;
}
else{
j++;
}
}
if(a[i]==mmin){
if(i==0) break;
else{
i--;
j=a[i]+1;
a[i]=mmin;
continue;
}
}
if(i==n-1){
count++;
j=a[i]+1;
a[i]=mmin;
continue;
}
i++;
}
return count;
}

};</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: