/ CYOJ / 题库 /

Print The Document [Fun_Coder 原创]

Print The Document [Fun_Coder 原创]

暂无测试数据。

题目描述

在操作系统源程序中,树和森林被用来构造文件系统。我们看到的 windows 和 linux 中的文件管理系统都是树型结构。现在,我们获得了一台电脑中的一个文件夹内的所有文件组成信息,请你打印出整个文件夹的文件树。

输出格式要求如下:

  1. 按层级输出, 先输出同一层级的文件,再输出文件夹,输出顺序按字典序从小到大;
  2. 层级与层级之间的缩进为 \(4\) 个空格;
  3. 当一个文件夹中包含子文件夹时,会从该文件夹的树根向下,每行输出一个 |,直至文件夹输出结束。反之,如果仅包含文件,则不输出 |
  4. 为了区分文件和文件夹,子文件前不加横向的前导 -,子文件夹前加 -
  5. 在一棵树分出一棵子树(子文件夹)时,规则 4 中输出的 | 要替换成 +,以表示出现一个新的子文件夹。最后一个子文件夹前的 | 要替换成 \,以表示文件夹结束;

输入格式

第一行一个整数 \(n(1\leq n <100)\),表示文件和文件夹的数量。

接下来 \(n-1\) 行,每行三个字符串 \(type\), \(S_1\) 和 \(S_2\),表示文件或文件夹 \(S_2\) 是 \(S_1\) 的子文件或文件夹(文件或文件夹名长度不超过 \(40\))。如果 \(type\) 是 file,则 \(S_2\) 是文件,如果 \(type\) 是 folder,则 \(S_2\) 是文件夹。字符串之间以空格隔开。

为了简化问题,数据保证文件或文件夹名称仅包含数字、字母、下划线和点。并且不会存在两个相同名称的文件或者文件夹。

输出格式

按题目要求输出整棵文件树。

样例

3
file test test.depend
file test test.cbp
file test main.cpp
test
    main.cpp
    test.cbp
    test.depend

解释#2

test 文件夹下只有 3 个在根目录下的文件。

6
file test test.depend
file test test.cbp
file test main.cpp
folder test obj
folder test bin 
folder test .trash
test
|   main.cpp
|   test.cbp
|   test.depend
+---.trash
+---bin
\---obj

解释#2

test 文件夹下有 3 个在根目录下的文件和 3 个空文件夹。

16
file test main.cpp
file test test.cbp
file test test.depend
file test test.layout
folder test bin 
file bin test2.exe
folder bin Release
file Release test.exe
folder test obj
file obj main.o
folder obj Debug
folder test src
file src abc.cpp
file src def.cpp
folder src back_up
file back_up test.zip
test
|   main.cpp
|   test.cbp
|   test.depend
|   test.layout
+---bin
|   |   test2.exe
|   \---Release
|           test.exe
+---obj
|   |   main.o
|   \---Debug
\---src
    |   abc.cpp
    |   def.cpp
    \---back_up
            test.zip

解释#3

test 文件夹下有 3 个在根目录下的文件和 3 个文件夹,3 个文件夹下还有文件或文件夹。

扩展知识

打开 cmd 控制台窗口,在某个文件夹下输入 tree /f /a > file_tree.txt 即可打印出当前路径下的所有文件/文件夹构成的文件树到文件 file_tree.txt 中。

信息

ID
1021
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者