标签:
题目抽象:给出一个二维字符数组表示的树,将其表示成一维字符数组表示的树。
思路:直接在二维字符数组中递归画树即可。
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 }
标签:
原文地址:http://www.cnblogs.com/hutaishi/p/4488763.html