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

[LeetCode]N-Queens II

2016-10-22 17:31 288 查看
Question

Follow up for N-Queens problem.

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



本题难度Hard。

【思路】

N-Queens中返回棋盘变成了解的个数。不必多说。

【代码】

public class Solution {
int ans=0;
public int totalNQueens(int n) {
//require
if(n<=0)
return ans;
//create
int[] nqueens=new int
;
//invariant
dfs(nqueens,n,0);
//ensure
return ans;
}

private boolean isValid(int[] nqueens,int step){
for(int i=0;i<step;i++){
if(nqueens[i]==nqueens[step]||Math.abs(nqueens[i]-nqueens[step])==(step-i))
return false;
}
return true;
}

private void dfs(int[] nqueens,int n,int step){
//base case
if(step>n-1){
ans++;
return;
}

for(int i=0;i<n;i++){
nqueens[step]=i;
if(isValid(nqueens,step))
dfs(nqueens,n,step+1);
}

}
}


参考

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