class Solution {
public:
vector<vector<string> > solveNQueens(int n) {
vector<vector<string>>result;
vector<int>C(n,-1);
dfs(C,result,0);
return result;
}
void dfs(vector<int>&C,vector<vector<string>>&result,int row)
{
int N=C.size();
if(row==N)
{
vector<string>temp;
for(int i=0;i<N;i++)
{
string s(N,'.');
for(int j=0;j<N;j++)
{
if(j==C[i])s[j]='Q';
}
temp.push_back(s);
}
result.push_back(temp);
return;
}
for(int j=0;j<N;j++){
if(isValid(C,row,j))
{
C[row]=j;
dfs(C,result,row+1);
}
}
}
bool isValid(vector<int>C,int row,int col)
{
for(int i=0;i<row;i++)
{
if(C[i]==col)return false;
if(abs(i-row)==abs(C[i]-col))return false;
}
return true;
}
};
网友评论