蒜头君在工地里搬砖,这里的包工头有个特殊的嗜好,他让蒜头君把砖头在一条直线上摆成 nn 堆。蒜头君只想早点下班,他胡乱地搬运砖头,最终第 ii 堆的高度是 a_iai。包工头把所有相邻两堆的差值记录下来,得到 n-1n−1 个数。如果这些数包括了 [1,n-1][1,n−1] 范围内所有的整数,那么蒜头君就能得到三天带薪休假。 现在请你编写一个程序,判断蒜头君能否获得三天休假。
输入格式
第一行一个整数 n (1≤n≤1000),表示砖头的堆数。
第二行 n 个整数 ai (1≤ai≤10e8),表示每堆砖头的高度。
输出格式
如果蒜头君能得到三天休假,输出"YES",否则输出"NO"。
输出时每行末尾的多余空格,不影响答案正确性
样例输入复制
8
3 1 7 4 11 7 12 13
样例输出复制
YES
代码:
#include<stdio.h>
#include<math.h>
int main()
{
int n,c;
scanf("%d",&n);//输入砖头的堆数n
int a[n],b[n];//创建两个数组前者表示每堆的高度,后者用于差值查找
for(int i=1;i<n;i++){
b[i]=1;}//初始化b数组
scanf("%d",&a[0]);先输入第一个数组
for(int i=1;i<n;i++){
scanf("%d",&a[i]);//赋值
c=abs(a[i]-a[i-1]);//abs()计算差值的绝对值
b[c]=0;//标记差值
}
int count =0;
for(int i=1;i<n;i++){
count+=b[i];}//查看【1,n-1】间所有数都是否被标记
if(count==0)//全部被标记则返回YES
{
printf("YES");
}
if(count!=0)
{
printf("NO");
}
return 0;
}