可以用路徑來描述資料夾,路徑為乙個包含若干部分的字串,之間用』/』分隔。每部分均為乙個資料夾的名稱,且表示這個資料夾的父資料夾為前一部分描述的資料夾。
例如:/home/fj/summer表示根目錄下有乙個名稱為home的資料夾,這個home資料夾下有乙個名稱fj的資料夾,這個名稱為fj的資料夾下有。
每個路徑的第1個字元總是』/』,且不會出現兩個連續的』/』,最後乙個字元不會是』/』。而所有資料夾僅包含數字和字母。
現在先給出n個路徑,一開始除了根目錄不存在任何資料夾,在每給出乙個路徑後,對於第i個路徑,你需要輸出的是若要讓第1個路徑到第i個路徑存在,最少需要新建多少個資料夾。
輸入檔案第1行為乙個正整數n。
接下來n行,每行為乙個描述路徑的字串,長度均不超過100。
輸出應包含n行,每行1個正整數,第i行輸出若要使第1個路徑到第i個路徑存在,最少需要新建多少個資料夾。
樣例資料#1
2 /home/fj/summer
/home/fj/123
樣例資料#2
3 /chicken
/chicken/egg
/chicken
樣例資料#3
4 /a
/a/b
/a/c
/b/b
樣例資料#1
3 4
樣例資料#2
1 2
2 樣例資料#3
1 2 3 5
對於所有資料,n<=1000。
對於部分資料,有n<=20;
對於部分資料,有n<=200;
對於部分資料,有對於所有路徑最多存在兩個』/』(包含第1個字元)。
對於每乙個路徑,對』/』中間的字串累加放在trie樹里,當然最後要新增乙個』/』,最後統計單詞個數即可,具體看**
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
inline
const
int get_int()
while(x>='0'&&x<='9')
return num*bj;
}const
int maxn=300000;
struct tree
};struct trie
void insert(string s) else x=tree[x].child[y];
}tree[x].bj=1;
word++;
}int find(string s)
if(tree[x].bj)return x; //有標記域才能返回
else
return -1;
}};trie trie;
int n;
int main() else tmp+=s[i];
tmp+='/';
if(trie.find(tmp)==-1)trie.insert(tmp);
printf("%d\n",trie.word);
}return
0;}
利用遞迴刪除資料夾(資料夾中套資料夾)
刪除目錄 bool deldir const ansistring p if p.isempty p.length 4 return false 引數必須大於3,即不能為磁碟根目錄或空白 int len p.length char path p.c str ansistring dir ansist...
拷貝檔案 資料夾 建立資料夾 刪除資料夾操作
qt拷貝檔案 資料夾 建立資料夾 刪除資料夾操作 cpp view plain copy brief 拷貝檔案到目的資料夾 param srcfilename 原始檔全路徑,比如 f tx wwxx.txt f tx des desd param desfilepathname 要copy到的目的路...
資料夾刪不掉?有種資料夾叫 畸形資料夾
右鍵刪除 刪不掉。用命令列 rd命令 刪除,找不到檔案。檔案粉碎機 粉碎無效果。在網上查到這個命令 del f a q 1 rd s q 1 新建文字文件,然後改txt字尾為 cmd 把資料夾拽到這個檔案上面,成功刪除。畸形資料夾 定義 就是在windows中無法或難以通過正常途徑進行建立 檢視 刪...