n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
上图为 8 皇后问题的一种解法。
给定一个整数 n,返回 n 皇后不同的解决方案的数量。
示例:
输入: 4
输出: 2
解释: 4 皇后问题存在如下两个不同的解法。
[
[".Q..", // 解法 1
"...Q",
"Q...",
"..Q."],
["..Q.", // 解法 2
"Q...",
"...Q",
".Q.."]
]
代码:
int m, sum;
int list_[100];
void place(int row)
{
if (row == m)sum++;
for (int i = 0; i < m; i++)
{
bool flag = true;
for (int j = 0; j < row; j++)
if (list_[j] == i || list_[j] - j == i - row || list_[j] + j == i + row)flag = false;
if (flag)
{
list_[row] = i;
place(row + 1);
}
}
}
class Solution {
public:
int totalNQueens(int n) {
m = n;
sum = 0;
place(0);
return sum;
}
};
来源:CSDN
作者:csuzhucong
链接:https://blog.csdn.net/nameofcsdn/article/details/104100608