首页 > 代码库 > LeetCode--N-Queens

LeetCode--N-Queens

dfs:根据行或者列开始,

假设根据行,

从第1行开始,从第一行的每一列对应的元素开始dfs,直到第n行,输出结果

 1 /************************************************************************* 2 > File Name: N-Queens.cpp 3 > Author: zhoukang1991 4 > Mail: zhoukang199191@126.com 5 > Created Time: 2014年08月14日 星期四 22时20分03秒 6 ************************************************************************/ 7 #include <iostream> 8 #include <vector> 9 #include <string>10 #include <alogrithm>11 using namespace std;12 class Solution{13 public:14 vector<vector<string> > res;15 vector<vector<string> > solveNQueens(int n){16 res.clear();17 vector<int> A(n,-1);18 solve(A,0,n);19 return res;20 }21 void solve(vector<int> A,int cur,int n){22 if(cur == n){23 vector<string> r;24 for(int i = 0; i < n ;++i){25 string str(n,.);26 str(A[i]) = Q;27 r.push_back(str);28 }29 res.push_back(r);30 }31 else{32 for(int i = 0 ; i < n ; ++i){33 A[cur] = i;34 if(isValid(A,cur)){35 solve(A,cur+1,n);36 }37 }38 }39 }40 bool isValid(vector<int> A,int r){41 for(int i = 0 ; i < r ; ++i){42 if(A[i] == A[r] || (abs(A[i]-A[r])==(r-i))){43 return false;44 }45 }46 return true;47 }48 };49 int main(){50 return 0;51 }