Undraw the Trees 字符串数组递归画树

                        Undraw the Trees

题目抽象:给出一个二维字符数组表示的树,将其表示成一维字符数组表示的树。

思路:直接在二维字符数组中递归画树即可。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 using namespace std;
 7 const int MS=205;
 8 
 9 char str[MS][MS];
10 int n;
11 void draw(int r,int c)
12 {
13       printf("%c(",str[r][c]);
14       if(r+1<n&&str[r+1][c]=='|')
15       {
16             int j=c;
17             while(j-1>=0&&str[r+2][j-1]=='-')
18                   j--;
19             for(int i=j;str[r+2][i]=='-'&&str[r+3][i]!='\n';i++)    
20             {                                             //  这里需要特别注意   str[r+3][i]!='\n'
21                   if(str[r+3][i]!=' ')          //   考虑这种情况str[r+2][i]=='-'&&str[r+3][i]=='\n'
22                   {
23                         draw(r+3,i);
24                   }
25             }
26       }
27       printf(")");
28 }
29 
30 int main()
31 {
32       int T;
33       scanf("%d",&T);
34       getchar();     //  fgets会读入换行符
35       while(T--)
36       {
37             n=0;
38             while(1)
39             {
40                   fgets(str[n],MS,stdin);
41                   if(str[n][0]=='#')
42                         break;
43                   n++;
44             }
45             printf("(");
46             if(n)
47             {
48                   for(int i=0;str[0][i]!='\n';i++)
49                         if(str[0][i]!=' ')
50                   {
51                         draw(0,i);
52                         break;
53                   }
54             }
55             printf(")\n");
56       }
57       return 0;
58 }

 

posted on 2015-05-08 20:28  hutaishi  阅读(269)  评论(0)    收藏  举报

导航