题目描述
编写程序判断以下给出的整数序列是否为最小堆。
输入
第一行是元素的个数n;
第二行是n个整数序列。
输出
如果是小根堆,输出Yes,否者输出No。
样例输入
10
100 86 48 73 35 39 42 57 66 21
样例输出
No
参考程序
#include<stdio.h>
#include<stdlib.h>
void judge(int *,int );
int main()
{
int num;
scanf("%d",&num);
int a[100];
int i;
for(i=1;i<=num;i++)
{
scanf("%d",a+i);
}
judge(a,num);
return 0;
}
void judge(int *a,int n)
{
int i;
for(i=1;i<=n/2;i++)
{
if(a[i]<a[i*2]||a[i]<a[2*i+1])
{printf("Yes");return;}
}
printf("No");
}
注意
该程序仅供学习参考!