【leetcode刷题笔记】N-Queens II

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记录解的数目,当搜索到一个解的时候,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 }

你可能感兴趣的:(LeetCode)