• 树7 堆中的路径


    题目:https://pintia.cn/problem-sets/1268384564738605056/problems/1278908289143574528

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

    输入格式:

    每组测试第1行包含2个正整数N和M(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


    题解:https://blog.csdn.net/sky_miange/article/details/51819342
    代码:

    #include <cstdio>
    #include <cstdlib>
    #define MAX 1001
    #define MINH -10001
     
    int H[MAX],size;
     
    void  Create() { //建立空堆
        size = 0;
        H[0] = MINH;    //设置哨兵
    }
    void insert(int X) { //把X放于最后逐个与它的父节点进行比较,很巧妙!
        int i;
        for(i = ++size; H[i/2] > X; i /= 2)
            H[i] = H[i/2];
        H[i] = X;
    }
     
    int main() {
        int N, M, temp, j;
        scanf("%d%d", &N, &M);
        Create();
        for(int i = 0; i < N; i++) {
            scanf("%d", &temp);
            insert(temp);
        }
        for(int i = 0; i < M; i++) {
            scanf("%d", &j);
            printf("%d", H[j]);
            while(j > 1) {              //每次坐标除以2得到它的父节点,并输出就是路径
                j /= 2;
                printf(" %d", H[j]);
            }
            printf("
    ");
        }
        return 0;
    }



  • 相关阅读:
    appium启动android和iOS真机
    文本编辑器Sublime Text 3 -mac版简体中文汉化教程
    Navicat Premium Mac 安装
    mac下安装jmeter
    Pycharm 配置git
    mac下jdk安装配置
    WebDriverAgentRunner安装成功后build的常见报错
    WebDriverAgent入门篇-安装和使用
    macOS升级
    Bash on windows从14.0升级到ubuntu16.04
  • 原文地址:https://www.cnblogs.com/simon-chou/p/13619940.html
Copyright © 2020-2023  润新知