题意:
将树的关系用字符串的形式给出
分析:
直接dfs搜索,第i行第j个如果是字母,判断i+1行j个是不是‘|‘是的话在第i+2行找第一个‘-‘,找到后在第i+3行找字母,重复进行。
代码:
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int maxn=210;int n;char a[maxn][maxn];void dfs(int r,int c){ printf("%c(",a[r][c]); if(r+1<n&&a[r+1][c]==‘|‘) { int i=c; while(i-1>=0&&a[r+2][i-1]==‘-‘) i--; while(a[r+2][i]==‘-‘&&a[r+3][i]!=‘\0‘) { if(!isspace(a[r+3][i])) dfs(r+3,i); i++; } } printf(")");}void solve(){ n=0; while(1) { gets(a[n]); if(a[n][0]==‘#‘) break; else n++; } printf("("); if(n) { for(int i=0;i<=strlen(a[0]);i++) { if(a[0][i]!=‘ ‘) { dfs(0,i); break; } } } printf(")\n");}int main(){ int T; scanf("%d",&T); getchar(); while(T--) { solve(); }}
时间: 2024-11-04 18:13:40