题意:输入N个数,每个数t代表皇后在第i列第t行,问是否满足N皇后问题。
思路:暴力判断之前的皇后位置是否和当前矛盾即可。
代码
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAX_N = 1010;
int T, K;
int a[MAX_N];
int main() {
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
scanf("%d", &T);
while (T--) {
scanf("%d", &K);
bool flag = true;
for (int i = 0; i < K; i++) {
scanf("%d", &a[i]);
for (int j = 0; j < i; j++) {
if (a[j] == a[i] || (abs(i-j) == abs(a[i]-a[j]))) flag = false;
}
}
if (flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}