码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode@ [51/52] N-Queens

时间:2015-10-22 12:34:00      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

https://leetcode.com/problems/n-queens/

 1 class Solution {
 2 public:
 3     void dfs(vector<vector<string>> &ret, vector<vector<char>> map,int i, int j){
 4         if(i==map.size()-1){
 5             vector<string> ans; ans.clear();
 6             for(int ki=0;ki<map.size();++ki){
 7                 string s="";
 8                 for(int kj=0;kj<map[0].size();++kj){
 9                     s+=map[ki][kj];
10                 }
11                 ans.push_back(s);
12             }
13             ret.push_back(ans);
14             return;
15         }
16         
17         vector<vector<char>> tmp(map.size());
18         for(int i=0;i<tmp.size();++i) tmp.resize(map.size());
19         tmp = map;       
20         for(int k=0;k<map[0].size();k++){
21             
22             if(map[i+1][k]==.) continue;
23             
24             for(int col=0;col<map[0].size();++col){
25                 if(map[i+1][col]== ) map[i+1][col]=.; 
26             }
27             for(int row=i+1;row<map.size();++row){
28                 if(map[row][k]== ) map[row][k]=.;
29             }
30             for(int row=i+2,col=k+1;row<map.size() && col<map[0].size();++row,++col){
31                 if(map[row][col]== ) map[row][col]=.;
32             }
33             for(int row=i+2,col=k-1;row<map.size() && col>=0;++row,--col){
34                 if(map[row][col]== ) map[row][col]=.;
35             }
36             map[i+1][k]=Q;
37 
38             dfs(ret,map,i+1,k);
39             
40             map=tmp;
41         }
42         
43     }
44     vector<vector<string>> solveNQueens(int n) {
45         vector<vector<string>> ret;
46         if(n==0) return ret;
47         
48         vector<vector<char>> map(n);
49         for(int i=0;i<map.size();++i) map[i].resize(n);
50         for(int i=0;i<map.size();++i){
51             for(int j=0;j<map[i].size();++j) map[i][j]= ;
52         }
53         
54         vector<vector<char>> tmp(map.size());
55         for(int i=0;i<tmp.size();++i) tmp.resize(map.size());
56         tmp = map;
57         for(int k=0;k<map[0].size();k++){
58             for(int col=0;col<map[0].size();++col) map[0][col]=.;
59             for(int row=0;row<map.size();++row) map[row][k]=.;
60             for(int row=1,col=k+1;row<map.size() && col<map[0].size();++row,++col) map[row][col]=.;
61             for(int row=1,col=k-1;row<map.size() && col>=0;++row,--col) map[row][col]=.;
62             map[0][k]=Q;
63             
64             dfs(ret,map,0,k);
65             
66             map=tmp;
67         } 
68 
69         return ret;
70     }
71 };

 

leetcode@ [51/52] N-Queens

标签:

原文地址:http://www.cnblogs.com/fu11211129/p/4900310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!