【leetcodeブラシノート】N-Queens II

4927 ワード

Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
【leetcode刷题笔记】N-Queens II
 
注釈: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 }