N皇后

class Solution {
public:
vector<vector<string>> result;
void DFS(int count, int n, vector<int>& jilu)
{
if (count == n)
{
vector<string> temp;
for (int i = 0; i<n; ++i)//遍历每一行
{
string tt(n, '.');
tt[jilu[i]] = 'Q';
temp.push_back(tt);
}
result.push_back(temp);
temp.clear();
return;
}
for (int i = 0; i<n; ++i)//遍历所有的可能性也就是皇后的所有可能点
{
bool flag = true;
jilu[count] = i;
for (int j = 0; j<count; ++j)//遍历之前的节点看看是否冲突
{
if (jilu[count] == jilu[j] || jilu[count] + count == jilu[j] + j || jilu[count] - count == jilu[j] - j)
{
flag = false;
break;
}
}
if (flag)
DFS(count + 1, n, jilu);
}
}
vector<vector<string>> solveNQueens(int n) {
vector<int> jilu(n);
int count = 0;
DFS(count, n,jilu);
return result;
}
};
