zoukankan      html  css  js  c++  java
  • UVA

    #include <iostream>
    #include <cstring>
    using namespace std;
    const int maxn = 100;
    int sum[maxn];
    
    //输入并统计一颗子树,树根水平位置为 p 
    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; //先序遍历输入,第一个数据就是树根,如果第一个数据为 -1,说明整个树都为空 
    	memset(sum, 0, sizeof(sum));
    	int pos  = maxn / 2;
    	sum[pos] = v;
    	build (pos - 1); 
    	build (pos + 1); // biild的参数,为权值累加的位置,在数组中的下标 
    	
    }
    
    int main()
    {
    	int kase = 0;
    	while (init())
    	{
    		int p = 0;
    		while (sum[p] == 0) p++; //找最左边的叶子
    		cout << "Case " << ++kase << ":" << endl << sum[p++]; // 因为要避免行末输出多余的空格
    		while (sum[p] != 0) cout << " " << sum[p++];
    		cout << endl << endl; //Follow the output for each case by a blank line,注意是 each case!! 
    		
    	}
    	return 0;
    }

  • 相关阅读:
    筛选法 || POJ 1356 Prime Land
    搜索 || BFS || POJ 3278 Catch That Cow
    (素数筛) 找质数
    (map)后缀字符串
    字符串的进制
    (二进制枚举子集)买玩具
    (基础)01背包问题
    (基础)编辑距离
    (基础)最长公共字串
    最大子矩阵和
  • 原文地址:https://www.cnblogs.com/mofushaohua/p/7789399.html
Copyright © 2011-2022 走看看