【leetcodeブラシノート】N-Queens II
4927 ワード
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
注釈:http://www.cnblogs.com/sunshineatnoon/p/3853170.htmlを参照
解の個数を求めるだけで、コードを少し変更すればいい:プライベート変数resultで解の数を記録し、1つの解を検索した場合、result+1でよい.
コードは次のとおりです.
Now, instead outputting board configurations, return the total number of distinct solutions.
注釈:http://www.cnblogs.com/sunshineatnoon/p/3853170.htmlを参照
解の個数を求めるだけで、コードを少し変更すればいい:プライベート変数resultで解の数を記録し、1つの解を検索した場合、result+1でよい.
コードは次のとおりです.
1 public class Solution {
2 private int result = 0;
3 private boolean isValid(List<Integer> cols,int col){
4 for(int i = 0;i < cols.size();i++){
5 if(cols.get(i) == col)
6 return false;
7 if(cols.size() - i == Math.abs(cols.get(i) - col))
8 return false;
9 }
10 return true;
11 }
12 private void QueenDfs(int n,int level,List<Integer> cols){
13 if(level == n){
14 result++;
15 }
16
17 for(int i = 0;i < n;i++){
18 if(isValid(cols, i)){
19 cols.add(i);
20 QueenDfs(n, level+1, cols);
21 cols.remove(cols.size()-1);
22 }
23 }
24 }
25 public int totalNQueens(int n) {
26
27 List<Integer> cols = new ArrayList<Integer>();
28 QueenDfs(n, 0, cols );
29
30 return result;
31 }
32 }