今天只水了一道二叉树重建,本来白书上是有代码的,可惜我的白书锁教室了,只好自己想了一下,还算可以。
1 #include <stdio.h> 2 #include <string.h> 3 int cnt; 4 char c[30]; 5 void build(char * s,char * t,int l) 6 { 7 if(l == 1) 8 {c[cnt++] = *s; return ;} 9 int n = strchr(t,s[0]) - t; 10 if(n) build(s+1,t,n); 11 if(l-n-1) 12 build(s+n+1,t+n+1,l-n-1); 13 c[cnt++] = *s; 14 } 15 int main() 16 { 17 char a[30],b[30]; 18 int l,i; 19 while(~scanf("%s%s",a,b)) 20 { 21 cnt = 0; 22 l = strlen(a); 23 build(a,b,l); 24 for(i = 0; i < l; i++) 25 printf("%c",c[i]); 26 printf("\n"); 27 } 28 return 0; 29 }