小白专场-堆中的路径-c语言实现
更新、更全的《数据结构与算法》的更新网站,更有python、go、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11407287.html
一、题意理解
将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。
输入样例:
5(结点树) 3(i的个数)
46 23 26 24 10 -》结点数据
5 4 3 -》i值
通过上述样例,我们可以得到下图所示的树结构:

通过观察该树,我们可以看到输出样例:
24 23 10
46 23 10
26 10
二、堆的表示及其操作
/* c语言实现 */
#define MAXN 1001
#define MINH -10001
int H[MAXN], size;
void Create()
{
size = 0;
H[0] = MINH; // 设置岗哨
}
void Insert(int X)
{
// 将X插入H。这里省略检查堆是否已满的代码
int i;
for (i = ++size; H[i/2] > X; i /= 2)
H[i] = H[i/2];
H[i] = X;
}
三、主程序
/* c语言实现 */
int main()
{
读入n和m;
根据输入序列建堆;
对m个要求:打印到根的路劲;
return 0;
}
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;
}
小白专场-堆中的路径-c语言实现的更多相关文章
- 小白专场-堆中的路径-python语言实现
目录 更新.更全的<数据结构与算法>的更新网站,更有python.go.人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11407287.h ...
- 堆中的路径 【Heap】
7-2 堆中的路径(25 分) 将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤1000),分 ...
- PTA 05-树7 堆中的路径 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/713 5-5 堆中的路径 (25分) 将一系列给定数字插入一个初始为空的小顶堆H[] ...
- 堆中的路径(MOOC)
将一系列给定数字插入一个初始为空的小顶堆H[].随后对任意给定的下标i,打印从H[i]到根结点的路径. 输入格式: 每组测试第1行包含2个正整数N和M(≤),分别是插入元素的个数.以及需要打印的路径条 ...
- 浙大PTA - - 堆中的路径
题目链接:https://pta.patest.cn/pta/test/1342/exam/4/question/21731 本题即考察最小堆的基本操作: #include "iostrea ...
- pta 编程题12 堆中的路径
其它pta数据结构编程题请参见:pta 这道题考察的是最小堆. 堆是一个完全二叉树,因此可用数组表示,一个下标为 i 的结点的父节点下标为 i / 2,子结点下标为 2i 和 2i + 1. 插入元素 ...
- jvm之java类加载机制和类加载器(ClassLoader),方法区结构,堆中实例对象结构的详解
一.类加载或类初始化:当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载.连接.初始化3个步骤来对该类进行初始化.如果没有意外,JVM将会连续完成3个步骤. 二.类加载时机: 1 ...
- 【Java】 剑指offer(11) 矩阵中的路径
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字 ...
- 【转载】路径双反斜杠!!!Python IDLE或Python shell中切换路径 切换目录os.chdir("C:\\python37\\2019pythonshel37\\diedai")
Python IDLE或shell中切换路径在Python自带的编辑器IDLE中或者python shell中不能使用cd命令,那么跳到目标路径呢.方法是使用os包下的相关函数实现路径切换功能. im ...
随机推荐
- php 获取代码执行的时间
$start_time = microtime(true); // ... 执行代码 ...$end_time = microtime(true);echo '共'.round($start_time ...
- python接口自动化12-pytest前后置与fixture
前言 我们都知道在自动化测试中都会用到前后置,pytest 相比 unittest 无论是前后置还是插件等都灵活了许多,还能自己用 fixture 来定义.(甩 unttest 半条街?) 首先了解一 ...
- Saiku上线部署准备(三十)
Saiku上线部署准备 零零散散琢磨了快5个月了,终于快要上线了哈哈哈哈哈..... 激动!!! 以下是本地打包编译saiku至部署到服务器上使用的完整步骤哦 saiku部署到服务器 源码编译需要注 ...
- H5双重标题的适配
在QQ和微信中会自代一个标题栏,而手机浏览器没有标题栏. 因此,我自己写了一个标题栏 <div class="headbar"> <center class=&q ...
- Linux常用命令之文件编辑命令vim
vi命令 vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器.Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多 ...
- solidity 智能合约之间的调用
智能合约之间的调用 在区块链上,有些功能往往无法通过一个智能合约完成,此时便会用到智能合约之间的调用.本篇文章带大家通过具体示例来了解一下智能合约之间的调用. 在智能合约的编译过程中,有两种情况:调用 ...
- 面试官,我会写二分查找法!对,没有 bug 的那种!
前言科普 第一篇二分搜索论文是 1946 年发表,然而第一个没有 bug 的二分查找法却是在 1962 年才出现,中间用了 16 年的时间. 2019 年的你,在面试的过程中能手写出没有 bug 的二 ...
- PHP通过session判断防止表单重复提交实例
PHP通过session判断防止表单重复提交实例,当用户提交表单后,为防止重复操作,通过session来判断是否为初次提交,否则让他返回到之前表单页面. 当前表单页面is_submit设为0 SESS ...
- 安卓开发笔记(三十二):banner轮播图的实现
一.activity.xml 我这里主要爬取的爱奇艺首页的图片进行轮播,应用了两个github上的开源库,一个banner的库,一个加载网络图片的库,用开源库能够极大地节省我们编写代码的时间. < ...
- Event事件、进程池与线程池、协程
目录 Event事件 进程池与线程池 多线程爬取梨视频 协程 协程目的 gevent TCP服务端socket套接字实现协程 Event事件 用来控制线程的执行 出现e.wait(),就会把这个线程设 ...