Catalog
  1. 1. 输入格式:
  2. 2. 输出格式:
  3. 3. 输入样例:
  4. 4. 输出样例:
算法与数据结构7-5 堆中的路径 (25 分)

将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。

输入格式:

每组测试第1行包含2个正整数NM(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。

输出格式:

对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。

输入样例:

5 3
46 23 26 24 10
5 4 3

输出样例:

24 23 10
46 23 10
26 10

用了啊哈算法上的代码通不过,还得另行他法。

下附AC代码:

#include<iostream>
#include<stdlib.h>
using namespace std;
const int maxn = 1e6 + 1;
int h[maxn];
int n, m;
int Size = 0;
void insert(int x) {
Size++;
int i;
for (i = Size; x < h[i / 2]; i /= 2) {
h[i] = h[i / 2];
}
h[i] = x;
}
int main() {
cin >> n >> m;
int i;
h[0] = -100001;
for (i = 1; i <= n; i++) {
int t;
cin >> t;
insert(t);
}
while (m--) {
int t;
cin >> t;
for (i = t; i >= 1; i /= 2) {
if (i == t) cout << h[i];
else cout <<" "<< h[i];
}
cout << endl;
}
system("pause");
return 0;

}
Author: superzhaoyang
Link: http://yoursite.com/2019/09/17/算法与数据结构7-5-堆中的路径-25-分/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
  • 支付宝

Comment