• 7-5 堆中的路径


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

    输入格式:

    每组测试第1行包含2个正整数N和M(≤),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-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


    /*
        Name:
        Copyright:
        Author:  流照君
        Date: data
        Description:
    */
    #include <iostream>
    #include<string>
    #include <algorithm>
    #include <vector>
    #define inf 100005
    using namespace std;
    typedef long long ll;
    typedef int element_type;
    typedef struct node *heap;
    struct node{
    	   element_type *data;
    	   int size;
    	   int capacity;
    };
    heap creat_heap(int n)
    {
    	heap min_heap=(heap)malloc(sizeof(heap));
    	min_heap->data=(element_type*)malloc((n+1)*sizeof(element_type));
    	min_heap->size=0;
    	min_heap->capacity=n+1;
    	min_heap->data[0]=-inf;
    	return min_heap;
    }
    void insert(heap min_heap,int v)
    {
    	if(min_heap->size==min_heap->capacity-1)
    	return ;
    	min_heap->data[++min_heap->size]=v;
    	int i=min_heap->size;
    	for(;min_heap->data[i/2]>v;i=i/2)
    		 min_heap->data[i]=min_heap->data[i/2];
    	 min_heap->data[i]=v;
    }
    int main(int argc, char** argv)
    {
    #ifdef ONLINE_JUDGE//条件编译,如果有oj则忽略文件读取
    #else
    	//freopen("in.txt", "r", stdin);//输入输出文件重定向
    	//freopen("out.txt", "w", stdout);
    #endif  //#if, #ifdef, #ifndef这些条件命令的结束标志.
    //代码位置
    	int n,t,temp,cnt;
    	heap heap1;
    	cin>>n>>t;
    	heap1=creat_heap(n);
    	for(int i=1;i<=n;i++)
    	{
    		 cin>>temp;
    		 insert(heap1,temp);
    	}
    	while(t--)
    	{
    		cin>>cnt;
    		for(int i=cnt;i>1;i=i/2)
    		{
    			cout<<heap1->data[i]<<" ";
    		}
    		cout<<heap1->data[1]<<endl;
    	}
        return 0;
    }
    

      

  • 相关阅读:
    ASP.NET Core Docker部署
    Asp.net core WebApi 使用Swagger生成帮助页实例
    C#图片文字识别
    C#实现rabbitmq 延迟队列功能
    Windows下当地RabbitMQ服务的安装
    看大数据时代下的IT架构(1)业界消息队列对比
    查看sqlserver被锁的表以及如何解锁
    如何让win2008服务器显示中文无乱码
    Lucene.Net的服务器封装+APi组件 (开源)
    Oracle学习系列4
  • 原文地址:https://www.cnblogs.com/liuzhaojun/p/12398063.html
Copyright © 2020-2023  润新知