UVA 10562-Undraw the Trees
题目大意:给出一组字符串代表树,用()的形式输出树
解题思路:用二维数组,递归
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
char x[1000][1000];
void out(int a, int b, int l) {
printf("(");
for(int i = a; i <= b && x[l][i]; i++) {
if(x[l][i] != ' ' && x[l][i] != '#') {
cout << x[l][i];
if(x[l+1][i] == '|') {
int j = i, k = i;
for(; j > 0 && x[l+2][j] == '-'; j-- )
;
for( ; x[l+2][k] == '-'; k++ )
;
out(j, k, l+3);
}
else {
printf("()");
}
}
}
printf(")");
}
int main() {
int n;
cin >> n;
getchar();
while(n--) {
memset(x, '\0', sizeof(x));
int m = 0;
while(gets(x[m]) && x[m][0] != '#') {
m++;
}
out(0, strlen(x[0]), 0);
printf("\n");
}
return 0;
}