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

leetcode - N-Queens

2013-11-22 23:01 323 查看
class Solution {
public:
void generateResults(vector<vector<string> > &rlts, int n, int index,  int * cur, bool * flag1, bool * flag2, bool* flag3){
for (int i=0; i<n; i++){
int j = index+i;
int k = index-i+n-1;
if (flag1[i] || flag2[j] || flag3[k]){
continue;
}
flag1[i]=true;
flag2[j]=true;
flag3[k]=true;
cur[index] = i;
if (index==n-1){
vector<string> rlt;
for (int p=0; p<n; p++){
string s="";
for (int q=0; q<n; q++){
if (cur[p]==q)
s+='Q';
else s+='.';
}
rlt.push_back(s);
}
rlts.push_back(rlt);
}
else generateResults(rlts,n,index+1,cur,flag1,flag2,flag3);
flag1[i]=false;
flag2[j]=false;
flag3[k]=false;
}
}

vector<vector<string> > solveNQueens(int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
vector<vector<string> > rlts;
if (n<=0)
return rlts;
int * cur = new int
;
bool * flag1 = new bool
;
bool * flag2 = new bool[2*n-1];
bool * flag3 = new bool[2*n-1];
for (int i=0; i<n; i++){
flag1[i]=false;
cur[i] = 0;
}
for (int i=0; i<2*n-1; i++){
flag2[i]=false;
flag3[i]=false;
}
generateResults(rlts,n,0,cur,flag1,flag2,flag3);
delete []cur;
delete []flag1;
delete []flag2;
delete []flag3;
return rlts;
}
};


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