PTA堆中的路徑問題 C語言實現
#include<stdio.h>
#include<stdbool.h>
#define MAXN 1001
#define MINH -10001
int H[MAXN],size;
void Create()
{
size =0;
H[0]=MINH;
}
bool IsFull()
{
return (size==MAXN);
}
void Insert(int X)
{
int i;
if ( IsFull(H) ) {
printf("最大堆已滿");
return false;
}
for(i=++size;H[i/2]>X;i/=2)
{
H[i]=H[i/2];
}
H[i]=X;
}
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;
}