首页 > 代码库 > Leetcode: N-Queens C++
Leetcode: N-Queens C++
1 class Solution { 2 public: 3 vector<vector<string> > solveNQueens(int n) { 4 vector<vector<string>> res; 5 vector<vector<string>> pre_res; 6 for(int i = 0; i < n; i++){ 7 res.clear(); 8 for(int j = 0; j < n; j++){ 9 if(i == 0){10 vector<string> tmp;11 string s;12 s.assign(n,‘.‘);13 s[j] = ‘Q‘;14 tmp.push_back(s);15 res.push_back(tmp);16 }else{17 for(int k = 0; k < pre_res.size(); k++){18 if(not_attack(pre_res[k],i,j,n)){19 string s;20 s.assign(n,‘.‘);21 s[j] = ‘Q‘;22 vector<string> tmp;23 tmp = pre_res[k];24 tmp.push_back(s);25 res.push_back(tmp);26 }27 }28 29 }30 }31 pre_res = res;32 }33 return pre_res; 34 }35 bool not_attack(vector<string> cb, int row,int col, int n){36 int i = 0;37 while(i < row){38 if(cb[i][col] == ‘Q‘) return false;39 i++;40 }41 i = row - 1;42 int j = col - 1;43 while(i >= 0 && j >= 0){44 if(cb[i][j] == ‘Q‘) return false;45 i--;46 j--;47 }48 i = row - 1;49 j = col + 1;50 while(i >= 0 && j < n){51 if(cb[i][j] == ‘Q‘) return false;52 i--;53 j++;54 }55 return true;56 }57 };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。