zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    函数的扩展
    数组的扩展
    event(1)
    面试
    iframes
    浏览器CSS兼容
    BFC
    简单的一个轮播效果
    asp.net identity 2.2.0 在WebForm下的角色启用和基本使用(二)
    我的web框架设计
  • 原文地址:https://www.cnblogs.com/suishiguang/p/5750514.html
Copyright © 2011-2022 走看看