class Solution {
public:
vector<vector<string>> solveNQueens(int n) {
vector<vector<string>> res;
vector<int> pos(n,-1);
DFS(pos,0,res);
return res;
}
void DFS(vector<int> &pos,int row,vector<vector<string>> & res){
int n=pos.size();
if(row==n){
vector<string> out(n,string(n,'.'));
for(int i=0;i<n;i++){
out[i][pos[i]]='Q';
}
res.push_back(out);
}
else{
for(int col=0;col<n;col++){
int flag=1;
for(int i=0;i<row;i++){//判断有没有列或对角线冲突 判断对角线,即判断当前行减去第i行的值和当前列减去第i行皇后所在列的值是否相等
if(pos[i]==col||abs(row-i)==abs(col-pos[i])) flag=0;
}
if(flag){
pos[row]=col;
DFS(pos,row+1,res);
pos[row]=-1;
}
}
}
}
};
LeetCode Day40 Queen N
猜你喜欢
转载自blog.csdn.net/weixin_41394379/article/details/84308308
今日推荐
周排行