博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ural 1067 && poj 1760 Disk Tree(字典树+模拟)
阅读量:6119 次
发布时间:2019-06-21

本文共 1953 字,大约阅读时间需要 6 分钟。

  这题是模拟一个目录,我用到字典树来做这题。

  这题我是用大量stl来减少代码量,不过我对stl的功能并不是完全的熟悉,所以用起来有点别扭,代码时间也大约用了半个多小时,不过最后稳稳的1y了!~

参考代码:

View Code
1 #include 
2 #include
3 #include
4 #include
5 #include
6 7 using namespace std; 8 9 struct Node; 10 struct Cata; 11 typedef vector
vc; 12 13 struct Cata { 14 char name[10]; 15 Node *next; 16 17 bool operator < (const Cata &x) const { 18 return strcmp(name, x.name) < 0; 19 } 20 } ; 21 struct Node { 22 vc child; 23 24 Node() { 25 child.clear(); 26 } 27 } *Root; 28 29 void insert(char *p) { 30 char tmp[10]; 31 char *q = tmp; 32 Node *cur = Root; 33 Cata buf; 34 vc::iterator ii; 35 36 while (true) { 37 while (*p && *p != '\\') { 38 *q = *p; 39 q++, p++; 40 } 41 *q = 0; 42 // puts(tmp); 43 44 for (ii = cur->child.begin(); ii != cur->child.end(); ii++) { 45 if (!strcmp((*ii).name, tmp)) { 46 if (!(*ii).next) { 47 (*ii).next = new Node(); 48 } 49 cur = (*ii).next; 50 break; 51 } 52 } 53 // puts("???"); 54 if (ii == cur->child.end()) { 55 buf.next = new Node(); 56 strcpy(buf.name, tmp); 57 cur->child.push_back(buf); 58 cur = buf.next; 59 // puts("yeah~"); 60 } 61 62 if (*p) { 63 q = tmp; 64 p++; 65 } else { 66 break; 67 } 68 } 69 } 70 71 void print(int depth, Node *rt) { 72 if (!rt) return ; 73 74 vc::iterator ii; 75 76 sort(rt->child.begin(), rt->child.end()); 77 for (ii = rt->child.begin(); ii != rt->child.end(); ii++) { 78 for (int i = 0; i < depth; i++) { 79 putchar(' '); 80 } 81 puts((*ii).name); 82 print(depth + 1, (*ii).next); 83 } 84 } 85 86 int main() { 87 char buf[100]; 88 int n; 89 90 // freopen("in", "r", stdin); 91 while (~scanf("%d", &n)) { 92 Root = new Node(); 93 while (n--) { 94 scanf("%s", buf); 95 insert(buf); 96 } 97 print(0, Root); 98 } 99 return 0;100 }

 

——written by Lyon

转载于:https://www.cnblogs.com/LyonLys/archive/2012/10/31/Ural_1067_Lyon.html

你可能感兴趣的文章
mysql-python模块编译问题解决
查看>>
Oracle中drop user和drop user cascade的区别
查看>>
【Linux】linux经常使用基本命令
查看>>
Java 内存区域和GC机制
查看>>
更新代码和工具,组织起来,提供所有博文(C++,2014.09)
查看>>
HTML模块化:使用HTML5 Boilerplate模板
查看>>
登记申请汇总
查看>>
Google最新截屏案例详解
查看>>
2015第31周一
查看>>
2015第31周日
查看>>
在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。...
查看>>
Oracle 如何提交手册Cluster Table事务
查看>>
BeagleBone Black第八课板:建立Eclipse编程环境
查看>>
在服务器上用Fiddler抓取HTTPS流量
查看>>
文件类似的推理 -- 超级本征值(super feature)
查看>>
【XCode7+iOS9】http网路连接请求、MKPinAnnotationView自定义图片和BitCode相关错误--备用...
查看>>
各大公司容器云的技术栈对比
查看>>
记一次eclipse无法启动的排查过程
查看>>
【转】jmeter 进行java request测试
查看>>
读书笔记--MapReduce 适用场景 及 常见应用
查看>>