uva 699 the falling leaves——yhx
因为复制过来排版很乱,所以上截图。
1 #include<cstdio> 2 #include<cstring> 3 int sum[10010]; 4 void bd(int p) 5 { 6 int x; 7 scanf("%d",&x); 8 if (x==-1) return; 9 sum[p]+=x; 10 bd(p-1); 11 bd(p+1); 12 } 13 bool dl() 14 { 15 int i,j,k,p,q,x,y,z; 16 memset(sum,0,sizeof(sum)); 17 scanf("%d",&x); 18 if (x==-1) return 0; 19 sum[5000]=x; //树根建在最中间。 20 bd(4999); 21 bd(5001); 22 } 23 int main() 24 { 25 freopen("in.txt","r",stdin); 26 int n,i,j,k=0; 27 while (dl()) 28 { 29 i=0; 30 while (!sum[i]) i++; //找见最左端的结点 31 printf("Case %d:\n%d",++k,sum[i]); 32 while (sum[++i]) printf(" %d",sum[i]); 33 printf("\n\n"); //注意回车 34 } 35 }
利用先序的特性可以递归处理。