• codevs 2879 堆的判断


    题目描述 Description

    堆是一种常用的数据结构。二叉堆是一个特殊的二叉树,他的父亲节点比两个儿子节点要大,且他的左右子树也是二叉堆。现在输入一颗树(用二叉树的数组表示,即a[i]的左儿子与右儿子分别为a[2i],a[2i+1]),要求判断他是否是一个堆。

    输入描述 Input Description

    一个整数N,表示结点数。

    第二行N个整数,表示每个结点代表的数字

    输出描述 Output Description

    如果是,输出‘Yes’

    否则输出‘No’

    样例输入 Sample Input

    5

    1 2 3 4 5

    样例输出 Sample Output

    No

    数据范围及提示 Data Size & Hint

    1<N<100

    数字在2^31以内

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int a[110],n,m;

    int main()
    {
    memset(a,0,sizeof a );
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    cin>>a[i];
    for(int i=n/2;i>=1;i--)
    {
    int j=i*2;
    if(a[j+1]>a[j]) m=a[j+1];
    if(a[j+1]<a[j]) m=a[j];
    if(a[i]<m) {
    printf("No");
    return 0;
    }
    }
    printf("Yes");
    return 0;
    }

  • 相关阅读:
    c#多线程和Socket笔记
    Socket测试工具包的开发(TCP UDP)
    使用socket模拟服务器给客户端发消息
    AU3学习笔记
    c#委托与事件(三)
    c#委托与事件(二)
    使用的工具
    Zip 压缩问题件,获取真实扩展名
    PsExec使用
    socket 통신
  • 原文地址:https://www.cnblogs.com/suishiguang/p/5750514.html
Copyright © 2020-2023  润新知