【1147】Heaps (30分)【堆】
        【摘要】 
                    #include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#include<algorithm>  #include<map>#inclu...
    
    
    
    
  
   - 
    
     
    
    
     
      #include<iostream>
     
    
- 
    
     
    
    
     
      #include<stdio.h>
     
    
- 
    
     
    
    
     
      #include<stdlib.h>
     
    
- 
    
     
    
    
     
      #include<math.h>
     
    
- 
    
     
    
    
     
      #include<string.h>
     
    
- 
    
     
    
    
     
      #include<algorithm> 
     
    
- 
    
     
    
    
     
      #include<map>
     
    
- 
    
     
    
    
     
      #include<vector>
     
    
- 
    
     
    
    
     
      #include<queue> 
     
    
- 
    
     
    
    
     
      using namespace std;
     
    
- 
    
     
    
    
     
      //if判断别漏了right<n防止越界
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int m,n;
     
    
- 
    
     
    
    
     
      vector<int>v;
     
    
- 
    
     
    
    
     
      void postOrder(int index){
     
    
- 
    
     
    
    
     	if(index>=n) return;
     
    
- 
    
     
    
    
     	postOrder(index*2+1);
     
    
- 
    
     
    
    
     	postOrder(index*2+2);
     
    
- 
    
     
    
    
     	printf("%d%s",v[index],index==0?"\n":" ");
     
    
- 
    
     
    
    
     
      }
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      int main(){   
     
    
- 
    
     
    
    
     		scanf("%d%d",&m,&n);
     
    
- 
    
     
    
    
     
      		v.resize(n);
     
    
- 
    
     
    
    
     		for(int i=0;i<m;i++){
     
    
- 
    
     
    
    
     			for(int j=0;j<n;j++)  scanf("%d",&v[j]);
     
    
- 
    
     
    
    
     			int flag=v[0]>v[1]?1:-1;
     
    
- 
    
     
    
    
     			for(int j=0;j<=(n-1)/2;j++){
     
    
- 
    
     
    
    
     				int left=j*2+1,right=j*2+2;
     
    
- 
    
     
    
    
     				if(flag==1&&(left<n&&v[j]<v[left]||(right<n&&v[j]<v[right])))
     
    
- 
    
     
    
    
     
      					flag=0;
     
    
- 
    
     
    
    
     				if(flag==-1&&(left<n&&v[j]>v[left]||(right<n&&v[j]>v[right])))
     
    
- 
    
     
    
    
     
      					flag=0;
     
    
- 
    
     
    
    
     
      			}
     
    
- 
    
     
    
    
     			if(flag==0) printf("Not Heap\n");
     
    
- 
    
     
    
    
     			else printf("%s Heap\n",flag==1?"Max":"Min");
     
    
- 
    
     
    
    
     			postOrder(0);
     
    
- 
    
     
    
    
     
      		}
     
    
- 
    
     
    
    
     	system("pause");
     
    
- 
    
     
    
    
         return 0;   
     
    
- 
    
     
    
    
     
      }
     
    
 
文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。
原文链接:andyguo.blog.csdn.net/article/details/103917420
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
             
           
评论(0)