• 05-树7 堆中的路径


    将一系列给定数字插入一个初始为空的小顶堆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

     1 #include <stdio.h>
     2  
     3 #define MaxN 1001
     4 #define MinH -10001
     5  
     6 int H[MaxN],size;
     7 
     8 //创建最小堆 
     9 void Creat()
    10 {
    11     size = 0;
    12     H[0] = MinH;//设置岗哨,根结点H[0]最小 
    13 } 
    14 
    15 //将X插入H。这里省略检查对是否已满的代码 
    16 void Insert(int X)
    17 {
    18     int i;
    19     for(i = ++size; H[i/2] > X; i/=2) //将大的元素下移,找到X的位置i 
    20         H[i] = H[i/2];
    21     H[i] = X;
    22 }
    23 
    24 int main()
    25 {
    26     int N,M,x;
    27     scanf("%d %d", &N, &M);
    28     Creat();
    29     for(int i = 0; i < N; i++) {
    30         scanf("%d",&x);
    31         Insert(x);
    32     }
    33     int j;
    34     for(int i = 0; i < M; i++) {
    35         scanf("%d",&j);
    36         printf("%d",H[j]);
    37         while(j > 1) {
    38             j /= 2;
    39             printf(" %d",H[j]);//控制格式 
    40         }
    41         printf("
    ");
    42     }
    43     return 0;
    44 }
     
  • 相关阅读:
    html +JS 自学
    Linux下SVN多版本库管理
    Jenkins更换国内源
    Kubernetes Service
    Kubernetes Pod
    ubuntu下vim配置日常工作版本
    PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)
    mongodb 片键需要思考的问题
    SpringBoot--Easycode插件自定义模板
    Docker-概述
  • 原文地址:https://www.cnblogs.com/kuotian/p/5351757.html
Copyright © 2020-2023  润新知