zoukankan      html  css  js  c++  java
  • UVa 699

    题意

    先序输入一个带权二叉树, -1即无该儿子

    思路

    水题
    递归输入, 用数组保存每个水平位置的总和即可

    一开始没读清楚题, 以为是每一行作为一个二叉树, 本来想用string输入stringstream切割, 观察样例就能推翻

    AC代码

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <sstream>
    
    using namespace std;
    const int maxn = 100;
    int s[maxn];
    int minsize, maxsize;
    void build(int,int);
    
    void build( int i ){
        int x;
        cin >> x;
        if( x == -1 )   return;
        s[i] += x;
        minsize = min(minsize, i);
        maxsize = max(maxsize, i);
        build(i-1);
        build(i+1);
    }
    
    bool solve( int i ){
        minsize = 101, maxsize = -1;
        memset(s,0,sizeof(s));
        int x;
        cin >> x;
        if( x == -1 )   return false;
        s[i] += x;
        build(i-1);
        build(i+1);
        minsize = min(minsize, i);
        maxsize = max(maxsize, i);
    }
    
    int main()
    {
        int i, x;
        int casenum = 0;
        while( solve(maxn/2) ){
            for( int j = minsize; j <= maxsize; j++ ){
                if( j == minsize )  cout << "Case " << ++casenum << ':' << endl;
                else    cout << ' ';
                cout << s[j];
            }
            cout << endl << endl;
        }
        return 0;
    }
  • 相关阅读:
    C/C++一些库函数的实现
    约瑟夫环问题(Josephus)
    union关键字及大小端模式
    指针数组和数组指针
    巧用位运算
    C/C++生成可执行文件过程
    C语言+Modbus+NXP整体规划
    bug和待完善
    python学习第二课
    python学习第一课
  • 原文地址:https://www.cnblogs.com/JinxiSui/p/9740607.html
Copyright © 2011-2022 走看看