一开始想复杂了,只要检查有没有同行的,还有斜对角线。不可能同列,因为是按照1,2···k列来输入的。判断斜对角线其实就是判断两点斜率是否为1;abs(横坐标的差) == abs(纵坐标的差)
#include<bits/stdc++.h>
using namespace std;
int main() {
int n, k, a;
scanf ("%d", &n);
for (int i = 0; i < n; i++) {
scanf ("%d", &k);
vector<int> v(k);
bool flag = true;
for (int j = 0; j < k; j++) {
scanf ("%d", &v[j]);
for (int z = 0; z < j; z++) {
if (v[j] == v[z] || abs(v[j] - v[z]) == abs(j - z)) {
flag = false;
break;
}
}
}
if (flag) printf ("YES\n");
else printf ("NO\n");
}
}