堆的判断(1098)

来源:互联网 发布:软件设计师资格证书 编辑:程序博客网 时间:2024/05/16 18:52

编写程序判断以下给出的整数序列是否为最小堆。

Description:

第一行是元素的个数n,第二行是n个整数序列。

Input

如果是小根堆,输出Yes,否者输出No。

Output

行数 数据 1 10 2 100 86 48 73 35 39 42 57 66 21

Sample Input

1 No


代码

#include<iostream>     #include<algorithm>     #include<cmath>     #include<cstring>     using namespace std;     bool Judge(int a[],int n)    {        int i;        for (i = 1; i < ceil(n / 2);i++)        if ((a[i]>a[i * 2] && 2 * i<n) || (a[i]>a[i * 2 + 1] && (2 * i + 1) < n))            return false;        return true;    }    int main()    {        int i, n, a[100];        cin >> n;        for(i = 1; i <= n; i++)            cin >> a[i];        if (Judge(a, n))            cout << "Yes";        else            cout << "No";    }
原创粉丝点击