题目描述
给出一个包含n个元素的数组a[1..n],数组的每一个元素都是正整数。现在首先把a数组从小到大排序,然后观察a数组所有的相邻的两个数,如果存在相邻的两个数的差超过1,那么a数组就是“坏数组”,否则是“好数组”。如果是“好数组”输出“YES”,否则输出“NO”。
输入格式
多组测试数据。
第一行,一个整数T,表示有T组测试数据。1<=T<=1000。
每组测试数据格式如下:
第一行,一个整数n。 1<=n<=50。
第二行,n个整数,第i个整数是a[i],其中1<=a[i]<=100。
输出格式
共T行,每行一个字符串,"YES"或者"NO"
输入/输出例子1
输入:
5
3
2 1 2
4
5 5 5 5
3
4 1 2
4
4 4 1 3
1
100
输出:
YES
YES
NO
NO
YES
提交测评:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1005],f;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>m;
for(int j=1;j<=m;j++)cin>>a[j];
sort(a+1,a+m+1);
f=0;
for(int j=1;j<m;j++)if(a[j+1]-a[j]>1) f=1;
if(f==1)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
return 0;
}