LeetCode--N-Queens II

dfs

 1 class Solution {
 2 public:
 3     int res;
 4     int totalNQueens(int n) {
 5         res = 0;
 6         vector<int> arr(n);
 7         dfs(arr,0,n);
 8         return res;
 9     }
10     void dfs(vector<int> &arr,int index,int N){
11         for(int i = 0 ; i < N ; ++i){
12             arr[index] = i;
13             if(isOk(arr,index)){
14                 if(index == N-1){
15                     res++;
16                 }
17                 else{
18                     dfs(arr,index+1,N);
19                 }
20             }
21         }
22     }
23     bool isOk(const vector<int> &arr,int index){
24         for(int i = 0 ; i < index ; ++i){
25             if(arr[i] == arr[index] || abs(i-index)==abs(arr[i]-arr[index])){
26                 return false;
27             }
28         }
29         return true;
30     }
31 };
原文地址:https://www.cnblogs.com/cane/p/3956881.html