详细思路
class Solution { public: vector<vector<string>>ans; vector<vector<string>> solveNQueens(int n) { vector<string>ans1(n,string(n,'.')); dfs(n,ans1,0); return ans; } void dfs(int n,vector<string>&ans1,int depth){ if(depth==n){ ans.push_back(ans1); return; } for(int i=0;i<n;i++){ if(isValid(depth,i,ans1,n)){ ans1[depth][i]='Q'; dfs(n,ans1,depth+1); ans1[depth][i]='.'; } } } bool isValid(int row,int col,vector<string>&ans1,int n){ for(int i=0;i<row;i++){ if(ans1[i][col]=='Q')return false; } for(int i=row-1,j=col-1;i>=0&&j>=0;i--,j--){ if(ans1[i][j]=='Q')return false; } for(int i=row-1,j=col+1;i>=0&&j<n;i--,j++){ if(ans1[i][j]=='Q')return false; } return true; } }; 踩过的坑 vector<string>ans1(n,string(n,'.')); for(int i=row-1,j=col+1;i>=0&&j<n;i--,j++){