题解:UVA11195 Another n-Queen Problem
liujianchong · · 题解
UVA11195 Another n-Queen Problem 题解
Links:
题目传送门(洛谷)
题目传送门(Uva)
这是本蒟蒻 2026 年的第一篇题解。
题目大意
这题和八皇后模板原题 P1219 的唯一区别就是,有亿一些格子不能放皇后,且这些坏格子不阻挡皇后间的攻击。
思路
我们可以深搜解决本题。深搜的终止条件是行号
首先,我们开一个 bad 数组记录坏格子。
假设第
一部分代码
:::success[变量定义代码]
int n, col[20], cnt = 0;
bool bad[20][20];
:::
:::success[不是坏格子的方案第
bool check(int i) {
for (int j = 1; j < i; j++) {
if (col[j] == col[i] || col[j] - col[i] == j - i || col[j] - col[i] == i - j) {
return false;
}
}
return true;
}
::: :::success[深搜代码]
void dfs(int k) {
if (k > n) {
cnt++;
return;
}
for (int i = 1; i <= n; i++) {
col[k] = i;
if (!bad[k][i] && check(k)) {
dfs(k + 1);
}
}
}
:::