題目描述:給你一串路徑,譬如:
a\b\c
a\d\e
b\cst
d\你把這些路徑中蘊含的目錄結構給畫出來,子目錄直接列在父目錄下面,並比父目錄向右縮一格,就像這樣:ab
cd eb
cstd
同一級的需要按字母順序排列,不能亂。
輸入:每個測試案例第一行為乙個正整數n(n<=10)表示有n個路徑,當n為0時,測試結束,接下來有n行,每行有乙個字串表示乙個路徑,長度小於50。
輸出:輸出目錄結構,每乙個測試樣例的輸出緊跟乙個空行。
樣例輸入:
4a\b\c
a\d\e
b\cst
d\0
樣例輸出:
ab c
d e
b cst
d先帖**如下:
#include #include #include #include #include using namespace std;bool comp(string a,string b){
int l = a.length()>b.length()?b.length():a.length();
for(int i=0;iv;
while(cin>>n&&n){
v.resize(0);
while(n--){
cin>>str;
//cout《這道題目卡了很久。一直pe,原來題目中的輸出要求指的是 子目錄比父目錄向右縮一格
指的是 子節點的縮排長度 =父親節點的縮排 +父親節點本身字串長度+1.
懶得寫注釋了,程式的思想是把所有的檔案提取出來,存在乙個vector裡,對其按要求排序輸出即可。
比如說樣例中的:
a\b\c
a\d\e
b\cst
d\首先從這些目錄中提取出所有的檔案(包含路徑),得到:
a、a\b、a\b\c、a\d、a\d\e、b、b\cst、d,
然後要做的就是排序了,過程很簡單,在自定義的comp函式中實現。
在這兒排序後的結果應該跟上面一樣。
最後輸出,輸出的時候把檔案路徑的部分隱掉,至於空格的數量看題目的要求了。這兒最蛋疼了,一直沒搞清楚題意,害我pe了10幾次。
這題也可以用字典樹吧,感覺還是這個實現起來簡單一點。
OJ 1090 路徑列印
include include include include include using namespace std void func if find v.begin v.end str v.end while str.find string npos sort v.begin v.end fo...
題目四 路徑和
給定乙個包含非負整數的 m x n 網格 grid 請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。輸入 grid 1,3,1 1,5,1 4,2,1 輸出 7 override public int minpathsum int grid int ...
1967 路徑定向
給出乙個有向圖,要求給每條邊重定向,使得定向後出度等於入度的點最多,輸出答案和任意一種方案 input 第一行兩個正整數n,m,表示1 n號點與m條邊 接下來m行,每行兩個正整數xi,yi,表示存在一條有向邊從xi指向yi n 10 5,m 3 10 5,xi,yi noutput 第一行乙個整數a...