LeetCode 52. N皇后 II 一维数组存放每一行放皇后的位置(4ms)
原题链接
困难
作者:
虹之间
,
2020-06-26 17:08:18
,
所有人可见
,
阅读 637
class Solution {
public:
vector<int> path; // 记录每一行第几个位置放皇后
int res = 0;
void dfs(int n, int x)
{
if(x == n) res ++;
for(int y = 0; y < n; y ++ ){
bool flag = false;
for(int i = 0; i < x; i ++ ) // 判断同一列
if(path[i] == y) flag = true;
if(flag) continue;
for(int i = 0; i < x; i ++ ){ // 判断对角线
if(path[i] - i == y - x) flag = true;
if(i - path[i] == x - y) flag = true;
if(path[i] + i == x + y) flag = true;
}
if(flag) continue;
path.push_back(y);
dfs(n, x + 1);
path.pop_back();
}
}
int totalNQueens(int n) {
dfs(n, 0);
return res;
}
};