题意
N皇后问题
题解
使用dfs。
代码
class Solution {
public:
int result;
bool isOK(vector<int> cols, int pos)
{
for(int i = 0; i < pos; i++)
{
if(cols[i] == cols[pos] || abs(cols[i] - cols[pos]) == abs(i - pos))
return false;
}
return true;
}
void dfs(vector<int> cols, int pos, int n)
{
if(pos == n)
{
result++;
}
else
{
for(cols[pos] = 0; cols[pos] < n; cols[pos]++)
{
if(isOK(cols, pos))
dfs(cols, pos + 1, n);
}
}
}
int totalNQueens(int n) {
result = 0;
vector<int> cols(n);
dfs(cols, 0, n);
return result;
}
};