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 };