• The Falling Leaves UVA


    题目链接:https://vjudge.net/problem/UVA-699

    题目大意:给一颗二叉树,每个结点都有一个水平位置 :左子节点在它左边的1个单位,右子结点在它右边1个单位。从左向右输出每个水平位置的所有结点的权值之和。  

    思路:用sum[i]表示第i个水平位置的总和  。  其实这题并不难  但是因为刚刚学数据结构  二叉树并不熟悉  所以也列出来

    看代码:

    #include<iostream>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    const int maxn=1e6+5;
    int sum[maxn];
    void build(int p)
    {
        int v;
        cin>>v;
        if(v==-1) return ;
        sum[p]+=v;
        build(p-1);
        build(p+1);
    }
    bool init()
    {
        int v;
        cin>>v;
        if(v==-1) return false;
        memset(sum,0,sizeof(sum));
        int pos=maxn/2;
        sum[pos]=v;
        build(pos-1);
        build(pos+1);
        return true ;
    }
    int main()
    {
        int ca=0;
        while(init())
        {
            int p=0;
            while(sum[p]==0) p++;//找到最左边的叶子
            //cout<<"Case "<<++ca<<":"<<endl;
            printf("Case %d:
    ",++ca);
            cout<<sum[p++];
            while(sum[p]!=0) cout<<" "<<sum[p++];
            cout<<endl<<endl;
        }
        return 0;
    }
    当初的梦想实现了吗,事到如今只好放弃吗~
  • 相关阅读:
    CSP 模拟17
    晚测7
    CSP 模拟16
    CSP 模拟14
    CSP 模拟13
    Cypress系列(67)- 环境变量设置指南
    Cypress系列(66)- 测试运行最佳实践
    Cypress系列(65)- 测试运行失败自动重试
    Cypress系列(64)- 数据驱动策略
    Cypress系列(63)- 使用 Custom Commands
  • 原文地址:https://www.cnblogs.com/caijiaming/p/10352606.html
Copyright © 2020-2023  润新知