您的位置:首页 > 理论基础 > 数据结构算法

PTA 数据结构与算法题目集(中文)5-5 堆中的路径 (25分)

2017-04-14 21:22 671 查看
#include <stdio.h>

#include <string.h>

/*

建立一个小顶堆,输出 

*/

void tz(int t[],int i)

{
if(i==0)return;
if(t[(i-1)/2]<t[i])return;
else
{
int d=t[(i-1)/2];
t[(i-1)/2]=t[i];
t[i]=d;
tz(t,(i-1)/2);
}

}

void print(int t[],int x)

{
if(x==0)
{
printf("%d\n",t[x]);
return;
}
printf("%d ",t[x]);
print(t,(x-1)/2);

}

int main()

{
int t[1001],ti[1001],n,m,x;
while(~scanf("%d %d",&n,&m))
{
memset(t,100000,sizeof(t));
for(int i=0;i<n;i++)
scanf("%d",&ti[i]);
for(int i=0;i<n;i++)
{
t[i]=ti[i];
if(i)tz(t,i);
}
for(int i=0;i<m;i++)
{
scanf("%d",&x);
print(t,x-1);
}
}
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: