您的位置:首页 > 产品设计 > UI/UE

[LeetCode] N-Queens

2014-12-03 15:18 253 查看
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.



Given an integer n, return all distinct solutions to the n-queens puzzle.
Each solution contains a distinct board configuration of the n-queens' placement, where
'Q'
and
'.'
both
indicate a queen and an empty space respectively.
For example,

There exist two distinct solutions to the 4-queens puzzle:
[
[".Q..",  // Solution 1
"...Q",
"Q...",
"..Q."],

["..Q.",  // Solution 2
"Q...",
"...Q",
".Q.."]
]

class Solution {
public:
vector<vector<string> > ans;
vector<string> v;
int *col;
string s;
vector<vector<string> > solveNQueens(int n) {
for(int i = 0;i < n;i ++)
s.push_back('.');
col = new int
;
generate(n,0);
return ans;
}
void generate(int n,int dep){
if(dep == n){
ans.push_back(v);
return;
}
for(int i = 0;i < n;i ++){
if(check(dep,i)){
string ss = s;
ss[i] = 'Q';
v.push_back(ss);
generate(n,dep + 1);
v.pop_back();
col[dep] = -1;
}

}
}
bool check(int k,int i){
col[k] = i;
for(int i = 0;i < k;i ++)
if(col[i] == col[k] || abs(col[i] - col[k]) == abs(i - k)) return false;
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: