n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n ,返回 n 皇后问题 不同的解决方案的数量。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/n-queens-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
输入:n = 4 输出:2 解释:如上图所示,4 皇后问题存在两个不同的解法。
N皇后II版相比于I来说应该是简单了一些,没有一种对于结果转化的一步
N皇后 1
N皇后 2 源码
class Solution {
public:
int count = 0;
vector<pair<int, int>> temp;
//vector<vector<pair<int, int>>> res;
void dfs(int n, int row)
{
if(row==n)
{
count++; // 如果能到这一步说明存在一种情况
//res.push_back(temp);
}
for(int col = 0; col < n; ++col)
{
if(isvalied(row, col))
{
temp.emplace_back(row, col);
dfs(n, row+1);
temp.pop_back();
}
}
}
bool isvalied(int row, int col)
{
for(pair<int.int> e : temp)
{ // 是否满足位置约束
if(e.second==col || e.first+e.second==row+col || e.first-e.second==row-col)
return false;
}
return true;
}
int totalNQueens(int n) {
dfs(n, 0);
return count;
}
};