05-树7 堆中的路径
来源:互联网 发布:oracle 防火墙端口 编辑:程序博客网 时间:2024/06/05 02:57
将一系列给定数字插入一个初始为空的小顶堆H[]
。随后对任意给定的下标i
,打印从H[i]
到根结点的路径。
输入格式:
每组测试第1行包含2个正整数NNN和MMM(≤1000\le 1000≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的NNN个要被插入一个初始为空的小顶堆的整数。最后一行给出MMM个下标。
输出格式:
对输入中给出的每个下标i
,在一行中输出从H[i]
到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。
输入样例:
5 346 23 26 24 105 4 3
输出样例:
24 23 1046 23 1026 10
运行超时了。。。。
#define MAXN 1001#define MINH -10001int H[MAXN],size //数组来装堆(完全二叉树),i为父节点,左儿子为i*-1,右儿子为i*2void Create(){size = 0;H[0] = MINH;}void Insert(int X){int i;if(size==1000) // 堆已满 return;for(i=++size;H[i/2]>X;i/2){H[i] = H[i/2]; //从1开始插入,对比每个节点的父节点与当前插入的节点哪个大,哪个小,这是一个最小堆,要求父节点都小于子节点}H[i] = X;}int main(){int n,m,x,i,j;scanf("%d %d",&n,&m);Create();for(i=0;i<n;i++){scanf("%d",&x);Insert(x);}for(i=0;i<m;i++){scanf("%d";&j);printf("%d",H[j]);while(j>1){j /= 2;printf("%d",H[j]);}printf("\n");}return 0;}
0 0
- 05-树7 堆中的路径
- 05-树7 堆中的路径
- 05-树7 堆中的路径
- 05-树7 堆中的路径
- 05-树7 堆中的路径
- 05-树7 堆中的路径
- 05-树7 堆中的路径
- 05-树7 堆中的路径
- 05-树7 堆中的路径
- 05-树7 堆中的路径【建堆】
- 建立堆-05-树7 堆中的路径
- 05-树7 堆中的路径 (25分)
- 05-树7 堆中的路径 (25分)
- 05-树7 堆中的路径 (25分)
- 05-树7 堆中的路径 (25分)
- 05-树7 堆中的路径 (25分)
- 05-树7 堆中的路径 (25分)
- 05-树7 堆中的路径 (25分)
- 学习RecyclerView时出现的错误
- ubuntu14.04ldap client install and configure
- 献给23岁的我
- 2-mysql与PHP项目中一般操作
- JAVA语言赋值运算 自右至左是什么意思?
- 05-树7 堆中的路径
- HTML编码规范
- Html5实现自己的分页加载
- Java并发编程:Thread类的使用
- [从头学数学] 第199节 球面上的几何
- java的锁机制
- [笔试题目]使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?
- Hibrenate 延迟加载
- HTTP的识别,认证与安全