AcWing 1621. N 皇后问题
原题链接
简单
作者:
巨鹿噜噜噜路
,
2020-06-02 15:58:38
,
所有人可见
,
阅读 680
C++ 代码
#include <iostream>
using namespace std;
const int MAX_N = 1010;
int q[MAX_N];
bool check(int n) {
for (int i = 1; i <= n; i++) {
for (int j = i + 1; j <= n; j++) {
//检查行和对角线
if (q[i] == q[j] || abs(i - j) == abs(q[i] - q[j])) {
return false;
}
}
}
return true;
}
int main() {
int n, m;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &m);
for (int j = 1; j <= m; j++) {
scanf("%d", &q[j]);
}
if (check(m)) puts("YES");
else puts("NO");
}
return 0;
}
abs(loc[i] - loc[j]) == abs(i - j)
为啥列差和行差相等就不行呀,这是怎么体现在对角线上的懂了,如果列差和行差相等,正好处于同一个正方形的对角线上 😉