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

LeetCode-N-Queens-N皇后-回溯

2014-10-11 10:42 134 查看
https://oj.leetcode.com/problems/n-queens/

回溯法的课本例题。注意有递归非递归两种实现。

class Solution {
public:
int n,m;
vector <int> c;
vector <vector<string>> tot;
bool Check(int p,int q){
for (int i=0;i<p;i++){
if (c[i]==q) return false;
if (abs(p-i)==abs(q-c[i])) return false;
}
return true;
}
void Solve(int p){
if (p==n) {
vector <string> res(n,string(n,'.'));
for (int i=0;i<n;i++){
res[i][c[i]]='Q';
}
tot.push_back(res);
return;
}
for (int i=0;i<n;i++){
if (Check(p,i)){
c[p]=i;
Solve(p+1);
}
}
}
vector<vector<string> > solveNQueens(int n) {
this->n=n;
c.resize(n,-1);
Solve(0);
return tot;
}
};


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: