Algoogle

Algorithm for Programming Contest

AOJ 2583 JAG-channel

Category: AOJ Tag: implementation

JAG-channel

問題概要


ファイル構成を与えるので指定された木の形で出力しろ

解法


’.’は全部’ ‘に置き換える.
最後の’.’だけ’+’にする.
‘+’の上に’ ‘があったら’+’にぶつかるまで上って途中を全て’|’にする.

コード


(2583.cpp) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <bits/stdc++.h>
using namespace std;

int n;
string seq[1024];

void solve()
{
        for (int i = 0; i < n; i++) {
                int j = 0;
                while (j < (int)seq[i].size() and seq[i][j] == '.') {
                        seq[i][j++] = ' ';
                }
                if(!j) continue;
                seq[i][--j] = '+';
                int pi = i-1;
                while(pi >= 0 and j < (int)seq[pi].size() and seq[pi][j] == ' ') {
                        seq[pi--][j] = '|';
                }
        }
        for (int i = 0; i < n; i++) {
                cout << seq[i] << endl;
        }
}

bool input()
{
        cin >> n;
        for (int i = 0; i < n; i++) {
                cin >> seq[i];
        }
        return n;
}

int main()
{
        while(input()) solve();
        return 0;
}

Comments