您的位置:首页 > 其它

UVa 699 下落的树叶

2016-12-02 15:36 190 查看
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=640

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

一开始还建了树,后来发现建了树也啥用。哎,到现在为止,我的递归思想还是太弱了。

#include<iostream>
#include<cstring>
using namespace std;

int sum[1000];

void init(int pos)
{
int x;
cin >> x;
if (x == -1)  return;
sum[pos] += x;
init(pos - 1);
init(pos + 1);
}

int main()
{
int t;
int count = 0;
while (cin >> t&&t != -1)
{
memset(sum, 0, sizeof(sum));
sum[500] = t;
init(500-1);
init(500 + 1);
int i = 0;
while (sum[i] == 0)  i++;
int p = 500;
while (sum[p] != 0)   p++;
cout << "Case " << ++count << ":" << endl;
for (int k = i; k < p-1; k++)
{
cout << sum[k] << " ";
}
cout << sum[p-1] << endl<<endl;
}
return 0;
}


2016-12-02 15:36:33
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: