#include <iostream>
#include <vector>
using namespace std;
vector<int> v;
void postOrder(int pos,int n){
if(pos>=n) return;
postOrder(pos*2+1,n);//注意hash位置
postOrder(pos*2+2,n);
printf("%d%s",v[pos],pos==0?"\n":" ");
}
int main(){
int m,n;
int whetherH=1;//0:Not,1:maxH,2:minH
scanf("%d %d",&m,&n);
v.resize(n);//每次都一样大,不用每次clear()
for(int i=0;i<m;i++){
whetherH=1;
scanf("%d",&v[0]);
scanf("%d",&v[1]);
whetherH=(v[0]>=v[1])?1:2;//0:Not,1:maxH,2:minH
for(int j=2;j<n;j++){
scanf("%d",&v[j]);
if(whetherH==1){
if(v[(j-1)/2]<v[j]){//注意hash位置
whetherH=0;
}
}else if(whetherH==2){
if(v[(j-1)/2]>v[j]){
whetherH=0;
}
}
}
if(whetherH==0) printf("Not Heap\n");
else printf("%s Heap\n",whetherH==1?"Max":"Min");
postOrder(0,n);
}
return 0;
}
【PAT】1147 Heaps (30 分)
最新推荐文章于 2024-11-09 12:42:49 发布