题目来源:https://pintia.cn/problem-sets/994805342720868352/problems/994805348915855360
备考汇总贴:2020年6月PAT甲级满分必备刷题技巧
方法
只要判断对角线和行有没有重合的就可以,set的size()很有用。
给出的(列,行)求和如果相同,在同一条对角线上。
#include<iostream>
#include<set>
using namespace std;
int main(){
int n,m,r;
scanf("%d",&n);
while(n--){
scanf("%d",&m);
set<int> s,sum;
for(int c=1;c<=m;c++){
scanf("%d",&r);
s.insert(r);
sum.insert(c+r);
}
if(s.size()!=m || sum.size()!=m){
cout<<"NO"<<endl;
}else{
cout<<"YES"<<endl;
}
}
}