uva10562

    xiaoxiao2021-03-25  67

    #include<stdio.h>

    #include<string.h>

    #include <iostream>

    using namespace std;

    char f[201][201];

    char tree[410];

    int rom,top;

    void dfs(int deep,int left,int right){

        if(deep > rom)

            return;

        for(int i=left;i<=right;i++){

            if(i<strlen(f[deep])&&f[deep][i]!=' '&&f[deep][i]!='|'&&f[deep][i]!='-'&&f[deep][i]!='#'){

                tree[top++] = f[deep][i];

                tree[top++] = '(';

                if(f[deep+1][i]=='|'){

                    int l,r;

                    l = r = i;

                    while(f[deep+2][l]=='-') l--;

                    while(f[deep+2][r]=='-') r++;

                    dfs(deep+3,l+1,r-1);

                }

                tree[top++] = ')';

            }

        }

    }

    void read(){

        memset(f,' ',sizeof(f));

        rom = 0;

        while(gets(f[rom])){

            if(f[rom][0]=='#') break;

            ++rom;

        }

    }

    int main(){

        int T;

        scanf("%d",&T);

        getchar();

        while(T--){

            read();

            top = 0;

            tree[top++] ='(';

            dfs(0,0,(int)strlen(f[0])-1);

            tree[top++] = ')';

            for(int i=0;i<top;i++)

                printf("%c",tree[i]);

            printf("\n");

        }

        return 0;

    }

    转载请注明原文地址: https://ju.6miu.com/read-36405.html

    最新回复(0)