判断是否满足N皇后问题的解
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct node{
int x,y;
};
vector<node> v;
int main(){
int K;
cin>>K;
for(int i=0;i<K;i++){
int N;
scanf("%d",&N);
bool ans=true;
v.clear();
for(int j=1;j<=N;j++){
node n;
n.y=j;
scanf("%d",&n.x);
v.push_back(n);
}
for(int j=0;j<N-1;j++){
for(int m=j+1;m<N;m++){
if(v[j].x==v[m].x){ //判断不在同一行
ans=false;
break;
}else if(v[j].x-v[m].x==v[j].y-v[m].y){ //判断不在斜线上
ans=false;
break;
}
}
if(ans==false) break;
}
if(ans){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}