2172.数组与堆

通过数:38提交数:74学校:北京航空航天大学保研机试真题 题目列表 标签
题目描述 在各类实现堆的代码中,通常选择使用一维数组去模拟堆的结构。 如果在堆构建好之后,将这个一维数组输出,可以观察到它们有一些有趣的性质。 我们将小根堆(最小堆)构建完成后所对应的数列,称为$小根堆数列$,大根堆(最大堆)构建完成后所对应的数列称为$大根堆数列$。 堆是最重要的数据结构之一,堆的类型有$2$种:$最大堆$和$最小堆$。 对于$最大堆$,父结点的键值总是大于或等于任何一个子节点的键值。 对于$最小堆$,父结点的键值总是小于或等于任何一个子节点的键值。 通常堆的实现是用一维数组完成的。 给定一个长度为$n$的一维数组,请判断该一维数组是否实现了$最大堆$或者$最小堆$。 如果该一维数组实现了$最大堆$,请输出$Max\ heap$;如果该一维数组实现了$最小堆$,请输出$Min\ heap$;如果该一维数组既没实现$最大堆$,也没实现$最小堆$,请输出$Not\ a\ heap!$。 输入格式 第一行是一个正整数$T$,表示数据组数。 接下来有$T$组数据:每组数据包含$2$行,其中第$1$行为正整数$n$,表示一维数组的长度;第$2$行为$n$个正整数(每个正整数之间用空格隔开),表示该一维数组。 输出格式 对于每一组数据,输出$Max\ heap$、$Min\ heap$或者$Not\ a\ heap!$,每个一行。 输入样例 3 6 2 3 4 5 6 7 3 5 2 1 9 3 1 4 1 5 9 2 6 5 输出样例 Min heap Max heap Not a heap! 数据范围 $T \leq 20$ $2 \leq n \leq 100000$ 数据保证不会有一维数组,既实现$最大堆$,又实现$最小堆$。
C
补全
点击调试按钮即可调试代码。

点击提交按钮即可提交代码。