1777:文件結構“圖”

1777:文件結構“圖”

  • 查看
  • 提交
  • 統計
  • 提問
總時間限制:?
1000ms
內存限制:?
65536kB
描述

在計算機上看到文件系統的結構通常很有用。Microsoft Windows上面的"explorer"程序就是這樣的一個例子。但是在有圖形界面之前,沒有圖形化的表示方法的,那時候最好的方式是把目錄和文件的結構顯示成一個"圖"的樣子,而且使用縮排的形式來表示目錄的結構。比如:

ROOT
| dir1
| file1
| file2
| file3
| dir2
| dir3
| file1
file1
file2

這個圖說明:ROOT目錄包括三個子目錄和兩個文件。第一個子目錄包含3個文件,第二個子目錄是空的,第三個子目錄包含一個文件。

輸入
你的任務是寫一個程序讀取一些測試數據。每組測試數據表示一個計算機的文件結構。每組測試數據以'*'結尾,而所有合理的輸入數據以'#'結尾。一組測試數據包括一些文件和目錄的名字(雖然在輸入中我們沒有給出,但是我們總假設ROOT目錄是最外層的目錄)。在輸入中,以']'表示一個目錄的內容的結束。目錄名字的第一個字母是'd',文件名字的第一個字母是'f'。文件名可能有擴展名也可能沒有(比如fmyfile.dat和fmyfile)。文件和目錄的名字中都不包括空格,長度都不超過30。一個目錄下的子目錄個數和文件個數之和不超過30。
輸出
在顯示一個目錄中內容的時候,先顯示其中的子目錄(如果有的話),然后再顯示文件(如果有的話)。文件要求按照名字的字母表的順序顯示(目錄不用按照名字的字母表順序顯示,只需要按照目錄出現的先后顯示)。對每一組測試數據,我們要先輸出"DATA SET x:",這里x是測試數據的編號(從1開始)。在兩組測試數據之間要輸出一個空行來隔開。

你需要注意的是,我們使用一個'|'和5個空格來表示出縮排的層次。
樣例輸入
file1
file2
dir3
dir2
file1
file2
]
]
file4
dir1
]
file3
*
file2
file1
*
#
樣例輸出
DATA SET 1:
ROOT
|     dir3
|     |     dir2
|     |     file1
|     |     file2
|     dir1
file1
file2
file3
file4DATA SET 2:
ROOT
file1
file2
提示
一個目錄和它的子目錄處于不同的層次
一個目錄和它的里面的文件處于同一層次
來源
翻譯自 Pacific Northwest 1998 的試題

?

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 using namespace std;
 5 string a;
 6 int cc;//輸出深度
 7 int now=1;//記錄當前*數量 
 8 int flag=0;
 9 void work()
10 {
11     string str[50];//儲存該目錄下的文件 
12     int l=0;
13     while(cin>>a)
14     {
15         if(flag==0&&a[0]!='#')
16         {
17             cout<<"DATA SET "<<now<<":"<<endl;
18             cout<<"ROOT"<<endl;
19             flag=1;
20         }
21         if(a[0]=='#')
22         return;
23         else if(a[0]=='*')
24         {
25             cc=0;
26             sort(str+0,str+l);
27             for(int i=0;i<l;i++)
28             {
29                 cout<<str[i]<<endl;
30             }
31             cout<<endl;
32             now++;
33             //cout<<"DATA SET "<<now<<":"<<endl;
34             //cout<<"ROOT"<<endl;
35             flag=0;
36             work();
37         }
38         else if(a[0]=='d')
39         {
40             //cc++;
41             //str[l]=a;
42             //l++;
43             cc++;
44             for(int i=1;i<=cc;i++)
45             {
46                 cout<<"|";
47                 for(int j=1;j<=5;j++)
48                 cout<<" ";
49             }
50             cout<<a<<endl;
51             work();
52         }
53         else if(a[0]=='f')
54         {
55             
56             str[l]=a;
57             l++;
58             continue;
59         }
60         else if(a[0]==']')
61         {
62             
63             sort(str+0,str+l);
64             for(int i=0;i<l;i++)
65             {    
66                 for(int k=1;k<=cc;k++)
67                 {    
68                     cout<<"|";
69                     for(int j=1;j<=5;j++)
70                     cout<<" ";
71                 }
72                 cout<<str[i]<<endl;
73             }
74             cc--;
75             return;
76         }
77     }
78 }
79 int main()
80 {
81     //freopen("r.txt","r",stdin);
82     //freopen("w.txt","w",stdout);
83     work();
84     return 0;
85 }

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282588.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

thinkphp出現Call to undefined function Think\C() in ... online 313

造成這個問題的原因很多,在這里我只說明我自己遇到之后解決的辦法 我將functions.php改成了function.php之后,修改了一些其他無關緊要的東西出現了這個問題,來回排查,各種嘗試,最后,將function.php改回functions.php,可以正常運行

Oracle數據庫IP訪問限制(IP白名單黑名單)

1、編輯sqlnet.ora內容為&#xff1a;#允許訪問的IP&#xff08;白名單&#xff09;TCP.INVITED_NODES(127.0.0.1,192.168.56.109,ip2,ip3,..,..本地IP..)若使用白名單&#xff0c;必須有本地IP&#xff0c;否則監聽會起不來#不允許訪問的IP&#xff08;黑名單&#xff09;#TCP…

WPF效果第一百九十九篇之Gamma曲線

前面效果中分享了模塊對比;今天大周末那就再來分享一下最近實現的效果;基于YX^n公式根據不同的系數繪制Gamma曲線效果如下圖:1、曲線的話,咱就用最簡單的方式繪制一堆點:PathFigure pathFigure new PathFigure(){StartPoint new Point(0, count),};for(double x 0; x < 1…

圖片序列化和反序列化成圖片文件(代碼)

// // ViewController.m // 圖片序列化和反序列化 // // Created by Qlinchao on 17/3/14. // Copyright © 2017年 QLC. All rights reserved. //#import "ViewController.h"interface ViewController () property (weak, nonatomic) IBOutlet UIImageView …

windows 下 MyEclipse 逆向工程生成hiberate 對應配置文件以及 javaBean。

步驟1&#xff1a; 右邊工具欄 -> 右擊你的項目 -> 選中 MyEclipse -> Project Facets -> install Hibernate Facet -> 選擇對應的版本&#xff08;以及一些你想要的配置&#xff09; 步驟2&#xff1a; 導航欄 -> window -》 show View -> Other 。 然…

php加解密

一 對稱加密 1.mycyrpt的對稱加密: /*** param $key //數據加密密鑰 由自己定義,長度有限制 string* param $string //需要進行加解密的字符串 string* param $decrypt //加密還是解密 (最簡單的,0代表加密,1代表解密)* return string*/ function encryptDecrypt($key, $st…

深入理解Spring Boot數據源與連接池原理

? Create by ysterfoxmail.com 2018-8-2一&#xff1a;開始 在使用Spring Boot數據源之前&#xff0c;我們一般會導入相關依賴。其中數據源核心依賴就是spring‐boot‐starter‐jdbc 如下 <dependency><groupId>org.springframework.boot</groupId> …

Dapr 集成 Open Policy Agent 實現 接口的訪問控制

大型項目中基本都包含有復雜的訪問控制策略&#xff0c;特別是在一些多租戶場景中&#xff0c;例如Kubernetes中就支持RBAC&#xff0c;ABAC等多種授權類型。Dapr 的 中間件 Open Policy Agent 將Rego/OPA策略應用到傳入的Dapr HTTP請求中。Open Policy AgentOpen Policy Agent…

【Java】BigDecimal

一、前言 在使用Java&#xff0c;double 進行運算時&#xff0c;經常出現精度丟失的問題&#xff0c;總是在一個正確的結果左右偏0.0000**1。 特別在實際項目中&#xff0c;通過一個公式校驗該值是否大于0&#xff0c;如果大于0我們會做一件事情&#xff0c;小于0我們又處理其他…

PHP獲取當前頁面URL

//獲取頁面url function curPageURL() {$pageURL http;if (!empty($_SERVER[HTTPS])) {$pageURL . "s";}$pageURL . "://";if ($_SERVER["SERVER_PORT"] ! "80") {$pageURL . $_SERVER["SERVER_NAME"].":".$_SER…

【招聘(大連)】北森云計算 .NET 專場招聘

為了更好的實現戰略布局&#xff0c;逐步形成以三個產品研發中心&#xff08;北京、成都、大連&#xff09;為主&#xff0c;青島和南京為輔的產品研發團隊配置。北森云第三研發中心&#xff08;大連&#xff09;正式成立&#xff0c;目前大連的人選招聘正式開啟&#xff0c;歡…

PHP強制下載文件

//有時我們不想讓瀏覽器直接打開文件&#xff0c;如PDF文件&#xff0c;而是要直接下載文件&#xff0c;那么以下函數可以強制下載文件 //函數中使用了application/octet-stream頭類型。 function downloads($filename,$dir./) {$filepath $dir.$filename;if (!file_exists($f…

F5基于證書認證的客戶端登錄

1.生成密鑰RSA類型&#xff0c;密碼&#xff1a;123456保存為Openssl格式2.上傳客戶機SecureCRT生成的公鑰 Identity.pub到用戶home目錄下.ssh文件夾中cd .sshmv Identity.pub authorized_keys ##cat .ssh/id_rsa.pub >> ~/.ssh/authorized_keys3.更改F5 ssh配置文件tmsh…

C#多線程編程-必知必會

“發現問題的能力&#xff0c;運用技術解決問題的能力&#xff0c;是一個技術人成長的關鍵”圖片故事&#xff1a;洋姜的花&#xff0c;拍攝于2022年7月23日&#xff0c;地點&#xff1a;北京奧林匹克森林公園 &#xff0c;攝影師&#xff1a;劉先生概要&#xff1a;使用C#發起…

理解Go Interface

理解Go Interface1 概述Go語言中的接口很特別&#xff0c;而且提供了難以置信的一系列靈活性和抽象性。接口是一個自定義類型&#xff0c;它是一組方法的集合&#xff0c;要有方法為接口類型就被認為是該接口。從定義上來看&#xff0c;接口有兩個特點:接口本質是一種自定義類型…

『中級篇』Dockerfile詳解(17)

一般的&#xff0c;Dockerfile 分為四部分&#xff1a;基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動時執行指令。 ####官網學習 https://docs.docker.com/engine/reference/builder/#usage ####FROM 必須為第一個命令&#xff0c;指定基礎鏡像 FROM <image> FROM &…

洛谷 1165日志分析

題目描述 M 海運公司最近要對旗下倉庫的貨物進出情況進行統計。目前他們所擁有的唯一記錄就是一個記錄集裝箱進出情況的日志。該日志記錄了兩類操作&#xff1a;第一類操作為集裝箱入庫操作&#xff0c;以及該次入庫的集裝箱重量&#xff1b;第二類操作為集裝箱的出庫操作。這些…

KestrelServer詳解[1]:注冊監聽終結點(Endpoint)

具有跨平臺能力的KestrelServer是最重要的服務器類型。針對KestrelServer的設置均體現在KestrelServerOptions配置選項上&#xff0c;注冊的終結點是它承載的最重要的配置選項。這里所謂的終結點&#xff08;Endpoint&#xff09;與“路由”介紹的終結點不是一回事&#xff0c;…

php截取字符串,帶中文,多余的省略號代替

function subtext($text, $length) {if(mb_strlen($text, utf8) > $length) {return mb_substr($text, 0, $length, utf8)....;} else {return $text;}}$str 我們是family happy family; echo subtext($str,5); //我們是fa...

數據庫添加

<body><form action"herozhuce.php" method"post"> <div>賬號<input type"text" name"account"/></div> <div>密碼<input type"text" name"password"/></div> &…