对棋盘的左右对角线分别开一个数组,然后判断左右对角线是否唯一即可
#include<iostream>
using namespace std;
int main()
{
int k,n,a,flag;
cin>>k;
while(k--)
{
int zuo[2002]={},you[2002]={},hang[1001]={};
flag=1;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
hang[a]++;
zuo[a+i-1]++;
you[n+a-i-1]++;
}
for(int i=1;i<=2*n;i++)
{
if(zuo[i]>1||you[i]>1||hang[i]>1)
{
flag=0;
break;
}
}
if(flag)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}