zoukankan      html  css  js  c++  java
  • 1155 Heap Paths (30 分)(堆+dfs遍历)

    比较简单的一题

    遍历左右的时候注意一下

    #include<bits/stdc++.h>
    
    using namespace std;
    const int N=1e3+10;
    int s[N*2];
    int cnt=0;
    vector<int>t;
    vector<int>p[N];
    int n;
    void dfs(int v)
    {
        if(s[v]==-1){
            int i=v/2;
            if(s[i*2]!=-1||s[i*2+1]!=-1){
                return;
            }
            p[cnt++]=t;
    
            return ;
        }
        t.push_back(s[v]);
        dfs(v*2+1);
        dfs(v*2);
        t.pop_back();
    }
    int main()
    {
        memset(s,-1,sizeof(s));
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&s[i]);
        }
        dfs(1);
        for(int i=0;i<cnt;i++){
            if(i%2==1) continue;
            for(int j=0;j<p[i].size();j++){
                if(j) printf(" ");
                printf("%d",p[i][j]);
            }
            printf("
    ");
        }
        bool Max=false;
        bool Min=false;
        for(int i=1;i<n;i++){
            if(s[i*2]!=-1){
                if(s[i*2]>s[i]) Max=true;
            }
            if(s[i*2+1]!=-1){
                if(s[i*2+1]>s[i]) Max=true;
            }
        }
        for(int i=1;i<n;i++){
            if(s[i*2]!=-1){
                if(s[i*2]<s[i]) Min=true;
            }
            if(s[i*2+1]!=-1){
                if(s[i*2+1]<s[i]) Min=true;
            }
        }
        if(Max==false){
            printf("Max Heap
    ");
        }
        else if(Min==false){
            printf("Min Heap
    ");
        }
        else{
            printf("Not Heap
    ");
        }
        return 0;
    }
  • 相关阅读:
    shell test -n -z
    java -d64
    shell export
    topngroupcollector
    stat 查看文件修改时间
    随机30道小学计算题02(修改)
    设计四则运算2程序单元测试用例
    学习进度02
    随机30道小学计算题02
    随机30道小学计算题01
  • 原文地址:https://www.cnblogs.com/chenchen-12/p/10098067.html
Copyright © 2011-2022 走看看