N-Queens II

4246 ワード

Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
 1 public class Solution {

 2     int result = 0;

 3     public int totalNQueens(int n) {

 4         // Start typing your Java solution below

 5         // DO NOT write main() function

 6         result = 0;

 7         solve(new int[n], 0);

 8         return result;

 9     }

10     public void solve(int[] arr, int pos){

11         int size = arr.length;

12         if(pos == size){

13             result ++;

14             return;

15         }

16         for(int i = 0; i < size; i ++)

17             if(isValid(arr, pos, i)){

18                 arr[pos] = i;

19                 solve(arr, pos + 1);    

20             } 

21     }

22     public boolean isValid(int[] arr, int pos, int check){

23         for(int i = 0; i < pos; i ++)

24             if(check == arr[i] || Math.abs(pos - i) == Math.abs(check - arr[i])) return false;

25         return true;

26     }

27 }