博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 699 The Falling Leaves
阅读量:6471 次
发布时间:2019-06-23

本文共 1845 字,大约阅读时间需要 6 分钟。

//思路:一遍输入扩展前序一遍建树,在建树过程中记录该结点的水平坐标,根结点的坐标为0,往左减1,往右加1,最后会的到一个最左侧坐标L,最右侧坐标R

建树之后见遍历、,遍历过程中,统计各个坐标的值并求他们的和保存在数组中,但是左侧的坐标是负值,数组没有负值,所以开一个二维数组sum[2][MAX],第一行对应右侧的坐标,从1到R,第二行对应左侧的坐标,从1到-L,也就是将左侧的坐标在统计时取绝对值,然后累加求和.思考可知建树和遍历的过程实际上相同所以干脆把遍历去掉,直接建树,建树过程中就求水平坐标并累计求和

 

//注意输出的格式,时间也不太好,0.100上下

 

#include 
#include
#include
#define LEN sizeof(struct BTree)#define MAX 10010int sum[2][MAX];int L,R;struct BTree{ int data,pos; struct BTree *lchild,*rchild;}*pre; //建树时记录前驱结点void create_BTree(struct BTree* *T , int mark){ int a,k; scanf("%d",&a); if(a==-1) {(*T)=NULL; return ;} else { (*T)=(struct BTree*)malloc(LEN); (*T)->data=a; if(mark==1) (*T)->pos=pre->pos-1; else if(mark==2) (*T)->pos=pre->pos+1; else (*T)->pos=0; if((*T)->pos>=0) { k=(*T)->pos; sum[0][k]+=(*T)->data; if((*T)->pos>R) R=(*T)->pos; } else { k=0-(*T)->pos; sum[1][k]+=(*T)->data; if((*T)->pos
pos; } pre=(*T); mark=1; create_BTree( &((*T)->lchild) , mark); pre=(*T); mark=2; create_BTree( &((*T)->rchild) , mark); }}int main(){ struct BTree *T; int N=0,i,mark,flag; while(1) { memset( sum,0,sizeof(sum) ); mark=0; pre=NULL; L=R=0; create_BTree(&T,mark); if(!T) return 0; N++; printf("Case %d:\n",N);// printf("L=%d R=%d\n",L,R); flag=0; //为了服务于输出格式而存在的 for(i=0-L; i>0; i--) { if(!flag) { flag=1; printf("%d",sum[1][i]);} else printf(" %d",sum[1][i]); } if(!flag) printf("%d",sum[0][0]); else printf(" %d",sum[0][0]); for(i=1; i<=R; i++) printf(" %d",sum[0][i]); printf("\n\n"); } return 0;}

 

 

转载地址:http://ntpko.baihongyu.com/

你可能感兴趣的文章
二分法求平方根(Python实现)
查看>>
详解.NET IL代码(一)
查看>>
操作ACCESS数据库注意事项
查看>>
使用startActivityForResult方法(转)
查看>>
C# Linq获取两个List或数组的差集交集
查看>>
架构设计(ASP.NET MVC+Knockout+Web API+SignalR)
查看>>
so在genymotation中错误问题
查看>>
bespoke_百度百科
查看>>
Visual Studio 原生开发的10个调试技巧(二)
查看>>
转载:Cocos2D-x 游戏接入 Windows 设备所需做的六件事
查看>>
U3D版本《暗黑世界V1.0》编译——图文教程!
查看>>
1686: 道路重建
查看>>
c++11 模板的别名
查看>>
Composer 是什么
查看>>
db2 解锁表
查看>>
flexible.js + makegrid.js 自适应布局
查看>>
Java 多线程下的单例模式
查看>>
利用面向对象思想封装Konva动态进度条
查看>>
CentOS7下安装python-pip
查看>>
003-对象——对象的释放 抽象 封装 继承 多态
查看>>