bool check(int a[],int n){//检查序列是否符合
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i!=j){
if(abs(i-j)==abs(a[i]-a[j])||(abs(a[i]-a[j])==0)) return false;
}
}
}
return true;
}
vector<string> print(vector<int> temp){//打印
vector<string> ppp;
for(int j=0;j<temp.size();j++){
string x;
//if(j==0) x+='[';
//x+='"';
for(int t=1;t<=temp.size();t++){
if(t!=temp[j])
x+=".";
else x+="Q";
}
//x+='"';
//if(j==temp.size()-1) x+=']';
ppp.push_back(x);
}
return ppp;
}
class Solution {
public:
vector<vector<string>> solveNQueens(int n) {
vector<vector<int> > p;
vector<int> temp;
int a[n];
for(int i=1;i<=n;i++) a[i-1]=i;
int i=0;
do{
if(check(a,n)){
for(int j=0;j<n;j++){
temp.push_back(a[j]);
}
p.push_back(temp);
temp.clear();
}
}while(next_permutation(a,a+n));//暴力出省一
vector<vector<string> > yy;
for(int i=0;i<p.size();i++){
vector<string> xx=print(p[i]);
yy.push_back(xx);
}
return yy;
}
};