描述太烦了直接上链接
https://pintia.cn/problem-sets/994805342720868352/problems/994805348915855360
Sample Input:
4
8 4 6 8 2 7 1 3 5
9 4 6 7 2 8 1 9 5 3
6 1 5 2 6 4 3
5 1 3 5 2 4
Sample Output:
YES
NO
NO
YES
思路:
就是个加了范围的n皇后问题,if判断一下就好;不会柳神的vector法,先写第一种;
#include <iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1001;
int queen[maxn]={0};
bool isreal(int n,int queen[]){
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(queen[i]==queen[j]||(j-i)==abs(queen[j]-queen[i]))
return false;
}
}
return true;
}
int main()
{
int n,k;
scanf("%d",&k);
while(k--){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&queen[i]);
}
if(isreal(n,queen))cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}