uva 1556 - Disk Tree(特里)
2024-10-19 16:40:54
题目大意:给出N个文件夹关系,然后依照字典序输出整个文件文件夹。
解题思路:以每一个文件夹名作为字符建立一个字典树就可以,每一个节点的关系能够用map优化。
#include <cstdio>
#include <cstring>
#include <map>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 50005;
typedef map<string, int>::iterator iter;
struct Tire {
int sz;
map<string, int> g[maxn];
void init();
void insert(string s);
void put(int u, int d);
}tree;
int main () {
int n;
string s;
while (cin >> n && n) {
tree.init();
for (int i = 0; i < n; i++) {
cin >> s;
s += '\\';
tree.insert(s);
}
tree.put(0, 0);
cout << endl;
}
return 0;
}
void Tire::init() {
sz = 1;
g[0].clear();
}
void Tire::insert(string s) {
int u = 0;
string word = "";
for (int i = 0; i < s.length(); i++) {
if (s[i] == '\\') {
if (!g[u].count(word)) {
g[sz].clear();
g[u][word] = sz++;
}
u = g[u][word];
word = "";
} else
word += s[i];
}
}
void Tire::put (int u, int d) {
for (iter i = g[u].begin(); i != g[u].end(); i++) {
for (int j = 0; j < d; j++)
cout << " ";
cout << i->first << endl;
put(i->second, d + 1);
}
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
最新文章
- Sandcastle----强大的C#文档生成工具
- 【BZOJ】2795: [Poi2012]A Horrible Poem
- 地理围栏算法解析(Geo-fencing)
- 一键清理Windows垃圾的BAT文件代码
- linux命令集——<;一>;目录处理命令
- YTU 2621: B 继承 圆到圆柱体
- C# WinForm实现控件拖动实例介绍
- iOS 图片按比例压缩,指定大小压缩
- python之requests-multipart/from-data
- MySQL 批量Dll操作(转)
- OpenCV入门教程
- think in uml 2.1
- s5pv210 的启动
- shell脚本-工作练习篇
- Python random模块方法
- proc/net/dev实时网速统计实例【转】
- spring-boot 集成 log4j 记录日志
- java学习笔记(一):开始第一个java项目
- 从mysql读取数据写入mongo
- 尚硅谷springboot学习22-Thymeleaf入门
热门文章
- Eclipse with C++: ";Launch failed. Binary not found.";
- 关于扩展IP地址空间的几个方案的探讨
- Jenkins(两)
- 【剑指offer】q50:树节点最近的祖先
- 怎么样cocos2d-x正在使用ECS(实体-包裹-制)建筑方法来开发一款游戏?
- 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN
- NYOJ 118 路方案(第二小的跨越)
- 在Sql中使用Try Catch
- 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法
- JAVA学习课第五 — IO流程(九)文件分割器合成器