pta 编程题12 堆中的路径
其它pta数据结构编程题请参见:pta
这道题考察的是最小堆。
堆是一个完全二叉树,因此可用数组表示,一个下标为 i 的结点的父节点下标为 i / 2,子结点下标为 2i 和 2i + 1。
插入元素:先把元素放到数组的最后面,然后不断循环和父节点比较,如果小于父节点则交换。
数组的下标为0存放一个很小的值作为哨兵,当进行插入操作时,如果插入的元素需要放到下标为1的位置时,和下标为0的值比较时会大于这个很小的值,因而会停止。
#include <iostream>
#include <vector>
using namespace std; int heap[];
int size = ;
void insert(int x);
void printTrace(int i); int main()
{
int n, m, i, t;
cin >> n >> m;
heap[] = -;//哨兵
for (i = ; i < n; i++)
{
cin >> t;
insert(t);
}
for (i = ; i < m; i++)
{
cin >> t;
printTrace(t);
}
return ;
} void insert(int x)
{
int i;
for (i = ++size; heap[i / ] > x; i /= )
heap[i] = heap[i / ];
heap[i] = x;
} void printTrace(int i)
{
vector<int> v;
while (i)
{
v.push_back(heap[i]);
i /= ;
}
for (int j = ; j < v.size(); j++)
{
if (j) cout << " ";
cout << v[j];
}
cout << endl;
}
pta 编程题12 堆中的路径的更多相关文章
- PTA 05-树7 堆中的路径   (25分)
		
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/713 5-5 堆中的路径 (25分) 将一系列给定数字插入一个初始为空的小顶堆H[] ...
 - 【好书推荐】《剑指Offer》之硬技能(编程题12~16)
		
本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/sword <[好书推荐]& ...
 - 力扣 - 剑指 Offer 12. 矩阵中的路径
		
题目 剑指 Offer 12. 矩阵中的路径 思路1(回溯.DFS) 这题可以使用回溯+递归来解决,思路如下: 将二维数组的每一个元素都作为起点进行回溯查找 每次查找的时候,都有四个方向,但是上一个方 ...
 - 堆中的路径 【Heap】
		
7-2 堆中的路径(25 分) 将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤1000),分 ...
 - 剑指 Offer 12. 矩阵中的路径 + 递归 + 深搜 + 字符串问题
		
剑指 Offer 12. 矩阵中的路径 题目链接 题目类似于迷宫的搜索. 需要注意的是,需要首先判断起始搜索的位置,可能有多个起点,都需要一一尝试. 每轮迭代的时候记得将是否遍历标记数组还原为未遍历的 ...
 - 浙大PTA - - 堆中的路径
		
题目链接:https://pta.patest.cn/pta/test/1342/exam/4/question/21731 本题即考察最小堆的基本操作: #include "iostrea ...
 - pta 编程题14 Huffman Codes
		
其它pta数据结构编程题请参见:pta 题目 题目给出一组字母和每个字母的频数,因为哈夫曼编码不唯一,然后给出几组编码,因为哈夫曼编码不唯一,所以让你判断这些编码是否符合是哈夫曼编码的一种. 解题思路 ...
 - pta 编程题13 File Transfer
		
其它pta数据结构编程题请参见:pta 这道题考察的是union-find并查集. 开始把数组中每个元素初始化为-1,代表没有父节点.为了使树更加平衡,可以让每一个连通分量的树根的负值代表这个连通分量 ...
 - pta 编程题20 旅游规划
		
其它pta数据结构编程题请参见:pta 题目 这个最短路径问题只需要求两点之间的最短路径,因而在Dijikstra算法中当求出目标点的最短路径之后跳出循环即可. #include <iostre ...
 
随机推荐
- pyMongo 一些基本操作
			
1. find() 函数, 可以在函数体内直接指定 filter, sort, projection(限制field), 语法如下: datas = col.find( filter = {" ...
 - uva 10817(数位dp)
			
uva 10817(数位dp) 某校有m个教师和n个求职者,需讲授s个课程(1<=s<=8, 1<=m<=20, 1<=n<=100).已知每人的工资c(10000 ...
 - uva 1153 顾客是上帝(贪心)
			
uva 1153 顾客是上帝(贪心) 有n个工作,已知每个工作需要的时间q[i]和截止时间d[i](必须在此前完成),最多能完成多少个工作?工作只能串行完成,第一项任务开始的时间不早于时刻0. 这道题 ...
 - bzoj 3944: Sum(杜教筛)
			
3944: Sum Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4930 Solved: 1313[Submit][Status][Discuss ...
 - android--系统路径获取
			
Environment 常用方法: * 方法:getDataDirectory()解释:返回 File ,获取 Android 数据目录.* 方法:getDownloadCacheDirectory( ...
 - CTS/APIO后文化课游记
			
根据ghj1222的尿性,干什么事都要写一个游记划水记啥的...然后就写嘛... 现在是5.30微机课,先开个坑,学校6.5放假,我将于6.5后开始更新本文 APIO回来后发生的事真的特别多...有的 ...
 - iOS拼图
			
#import "ViewController.h" @interface ViewController () @end @implementation ViewContro ...
 - Webpack+Vue构建项目
			
第一步:单纯的搭建出来我们的项目,并且通过webpack打包一个bundle.js然后运行起来 步骤: 1.建立项目必要的文件和文件夹(见截图) 2.配置webpack.develop.config. ...
 - Codeforces 1161C(博弈)
			
自己的一点想法 举几个例子后发现是谁先手痒痒把某一堆掏空了那他就GG了,因此要尽量让对方不得不掏空某堆. 用最简单的举例后发现:1 1 1 1 1 1,扔给谁谁完蛋:1 1 1 1 1 2,一样的,肯 ...
 - js——移动端js事件、zepto.js
			
1. touchstart : 手指放到屏幕上时触发 2. touchmove : 手指在屏幕上滑动时触发 3. touched : 手指离开屏幕时触发 4. touchcancel : 系统取消to ...