• UVA 10562 Undraw the Trees


    UVA_10562

        建树的过程并不算复杂,找好比较容易处理的一个部分看做一个阶段,然后递归即可。

        一开始没有仔细审题,误以为根节点只能是字母,而且还忽略了树为空的情况。

    #include<stdio.h>
    #include<string.h>
    #define MAXD 210
    int N;
    char b[MAXD][MAXD];
    void dfs(int x, int y)
    {
    int i, j, k;
    for(i = y; b[x][i] == '-'; i ++)
    if(b[x + 1][i] != ' ' && b[x + 1][i] != '\0')
    {
    printf("%c(", b[x + 1][i]);
    if(x + 1 < N && b[x + 2][i] == '|')
    {
    for(j = i; j && b[x + 3][j - 1] == '-';j --);
    dfs(x + 3, j);
    }
    printf(")");
    }
    }
    void solve()
    {
    int i, j, k;
    for(i = 0; b[1][i]; i ++)
    b[0][i] = '-';
    printf("(");
    dfs(0, 0);
    printf(")\n");
    }
    int main()
    {
    int t;
    scanf("%d", &t);
    getchar();
    while(t --)
    {
    N = 1;
    memset(b, '\0', sizeof(b));
    while(gets(b[N]) != NULL)
    {
    if(b[N][0] == '#')
    {
    -- N;
    break;
    }
    ++ N;
    }
    if(N == 0)
    printf("()\n");
    else
    solve();
    }
    return 0;
    }


  • 相关阅读:
    ASC2 做题记录
    ASC1 做题记录
    Codeforces #676 (div 2) 做题记录
    Codeforces #639 (div 1) 做题记录
    Atcoder Beginner Contest 160 做题记录
    CodeCraft-20 (div 2) 做题记录
    Codeforces 1242C
    Codeforces 1102F
    codeforces 732F
    codeforces 405E
  • 原文地址:https://www.cnblogs.com/staginner/p/2306594.html
Copyright © 2020-2023  润新知