class Solution {
public:
vector<int> vec;
vector<vector<string>> res;
void dfs(int n){
if(vec.size() == n){
vector<string> help;
for(int i=0;i<n;i++){
string str(n,'.');
str[vec[i]] = 'Q';
help.push_back(str);
}
res.push_back(help);
return;
}
for(int i=0; i<n; i++){
bool is_dfs = true;
for(int j=0; j<vec.size(); j++){
if(vec[j] == i || (abs(vec[j]-i) == vec.size()-j)){is_dfs = false; break;}
}
if(is_dfs){
vec.push_back(i);
dfs(n);
vec.pop_back();
}
}
return;
}
vector<vector<string>> solveNQueens(int n) {
dfs(n);
return res;
}
};