码迷,mamicode.com
首页 > 其他好文 > 详细

【数据结构】The Falling Leaves(6-10)

时间:2017-08-06 23:11:52      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:pos   names   class   read   算法入门   const   space   int   cas   

[UVA699]The Falling Leaves

算法入门经典第6章例题6-10(P159)

题目大意:有一颗二叉树,求水平位置的和。

试题分析:乱搞就可以过,将树根节点的pos记为0,向左-1,向右+1,统计答案即可。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std;

inline int read(){
	int x=0,f=1;char c=getchar();
	for(;!isdigit(c);c=getchar()) if(c==‘-‘) f=-1;
	for(;isdigit(c);c=getchar()) x=x*10+c-‘0‘;
	return x*f;
}
const int MAXN=1000;
const int INF=999999;
int N,M;
int sum[MAXN];
int Min,Max;
int cnt;

void solve(int pos){
	int ls=read();
	Max=max(Max,pos);
	Min=min(Min,pos);
	if(ls!=-1){
		sum[pos-1+200]+=ls;
		solve(pos-1);
	}
	int rs=read();
	if(rs!=-1){
		sum[pos+1+200]+=rs;
		solve(pos+1);
	}
	return ;
}
int k;
int main(){
	while(scanf("%d",&k)!=EOF){
		if(k==-1) break;
		memset(sum,0,sizeof(sum));
		Min=Max=0;
		sum[200]+=k;
		solve(0);
		printf("Case %d:\n",++cnt);
		for(int i=Min;i<Max;i++){
			printf("%d ",sum[i+200]);
		}
		printf("%d\n\n",sum[Max+200]);
	}
}

 

【数据结构】The Falling Leaves(6-10)

标签:pos   names   class   read   算法入门   const   space   int   cas   

原文地址:http://www.cnblogs.com/wxjor/p/7296112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!