HDU 1504 Disk Tree
转载请注明出处:http://blog.csdn.net/a1dark
分析:查了一下这题、发现网上没有什么关于这道题的解题报告、其实题目意思挺好懂的、就是给你一些文件的目录结构、然后让你把它们组合在一起、然后按照目录结构输出、注意是字典序、这道题是一个模拟、主要是对结构体和指针的掌握、使用嵌套结构体模拟文件的同级和子级文件、然后进行读取、插入、查询等操作、代码如下(0ms):
#include<stdio.h>
#include<string.h>
struct node{
node *child;
node *brother;
char key[10];
};
int n,m;
node *root;
void getname(char *str,char *key,int &j)
{
int i;
for(i=0;str[j]!='\0'&&str[j]!='\\';i++,j++)
key[i]=str[j];
key[i]='\0';
}
node *insert(node *parent,char *key)
{
node *p,*q,*t;
if(!parent->child||strcmp(parent->child->key,key)>0)
{
t=new node;
strcpy(t->key,key);
t->child=NULL;
t->brother=parent->child;
parent->child=t;
return t;
}
if(strcmp(parent->child->key,key)==0)
return parent->child;
for(p=parent->child,q=p->brother;q&&strcmp(q->key,key)<0;p=q,q=q->brother);
if(!q||strcmp(q->key,key)>0)
{
t=new node;
strcpy(t->key,key);
t->brother=p->brother;
p->brother=t;
t->child=NULL;
return t;
}
return q;
}
void read()
{
char str[90],key[9];
int i,cur;
node *p;
root=new node;
root->child=NULL;
scanf("%d",&n);
for(i=m=0;i<n;i++)
{
cur=0;
scanf("%s",str);
getname(str,key,cur);
for(p=insert(root,key);str[cur]!='\0';)
{
getname(str,key,++cur);
p=insert(p,key);
}
}
}
void find(node *p,int k)
{
int i;
for(;p;p=p->brother)
{
for(i=0;i<k;i++)
putchar(' ');
puts(p->key);
if(p->child)
find(p->child,k+1);
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
read();
find(root->child,0);
if(t)
printf("\n");
}
return 0;
}
HDU 1504 Disk Tree的更多相关文章
- 【HDOJ】1504 Disk Tree
文件可以重名.先按字典序将路径排序,再过滤掉公共前缀.其中的问题是'\'的ASCII比[A-Z0-9]大,将它替换为空格.否则字典序有问题. /* 1504 */ #include <iostr ...
- HDU 5513 Efficient Tree
HDU 5513 Efficient Tree 题意 给一个\(N \times M(N \le 800, M \le 7)\)矩形. 已知每个点\((i-1, j)\)和\((i,j-1)\)连边的 ...
- uva 1556 - Disk Tree(特里)
题目连接:uva 1556 - Disk Tree 题目大意:给出N个文件夹关系,然后依照字典序输出整个文件文件夹. 解题思路:以每一个文件夹名作为字符建立一个字典树就可以,每一个节点的关系能够用ma ...
- ural1067 Disk Tree
Disk Tree Time limit: 2.0 secondMemory limit: 64 MB Hacker Bill has accidentally lost all the inform ...
- HDU 4925 Apple Tree(推理)
HDU 4925 Apple Tree 题目链接 题意:给一个m*n矩阵种树,每一个位置能够选择种树或者施肥,假设种上去的位置就不能施肥,假设施肥则能让周围果树产量乘2.问最大收益 思路:推理得到肯定 ...
- HDU 4871 Shortest-path tree 最短路 + 树分治
题意: 输入一个带权的无向连通图 定义以顶点\(u\)为根的最短路生成树为: 树上任何点\(v\)到\(u\)的距离都是原图最短的,如果有多条最短路,取字典序最小的那条. 然后询问生成树上恰好包含\( ...
- Hdu 5379 Mahjong tree (dfs + 组合数)
题目链接: Hdu 5379 Mahjong tree 题目描述: 给出一个有n个节点的树,以节点1为根节点.问在满足兄弟节点连续 以及 子树包含节点连续 的条件下,有多少种编号方案给树上的n个点编号 ...
- HDU 6035 - Colorful Tree | 2017 Multi-University Training Contest 1
/* HDU 6035 - Colorful Tree [ DFS,分块 ] 题意: n个节点的树,每个节点有一种颜色(1~n),一条路径的权值是这条路上不同的颜色的数量,问所有路径(n*(n-1)/ ...
- HDU 3333 - Turing Tree (树状数组+离线处理+哈希+贪心)
题意:给一个数组,每次查询输出区间内不重复数字的和. 这是3xian教主的题. 用前缀和的思想可以轻易求得区间的和,但是对于重复数字这点很难处理.在线很难下手,考虑离线处理. 将所有查询区间从右端点由 ...
随机推荐
- 我的日常工具——gdb篇
我的日常工具——gdb篇 03 Apr 2014 1.gdb的原理 熟悉linux的同学面试官会问你用过gdb么?那好用过,知道gdb是怎么工作的么?然后直接傻眼... gdb是怎么接管一个进程?并且 ...
- RequiredFieldValidator的使用
特別說明:1.一個Button要對頁面的多個控件進行驗證,則需要設置button和其它受控控件的ValidationGroup屬性 aspx頁面實例: <tr class="h&quo ...
- Scrum之Sprint物件
产品订单(Product Backlog) 一个需求的列表. 一般情况使用用户故事来表示backlog条目 理想情况每个需求项都对产品的客户或用户有价值 Backlog条目按照商业价值排列优先级 优先 ...
- Github在windows7环境下使用入门
1.下载并安装 下载和安装一般都没什么问题,网上的链接一大堆,不过还是在此给一个安装的地址和安装的参考吧. 当然,安装完成后要保证git能使用,必须配置github 2.配置github 首先是要创建 ...
- gVIM 简洁配置 in Windows
原文链接:http://www.errdev.com/post/2/ 捣鼓了一段时间的VIM,神器终归是神器,果然编码效率提升了许多,当然还需要很多插件来配合.自己装插件很麻烦,还要有Vundle这个 ...
- iOS tableview 优化总结
根据网络上的优化方法进行了总括.并未仔细进行语言组织.正在这些优化方法进行学习,见另一篇文章 提高app流畅度 1.cell子控件创建写在 initWithStyle:reuseIdentifier ...
- 关闭HTML5只能提示(form上新增novalidate)
<form novalidate> <input type="text" required /> <input type="su ...
- 子元素过滤器nth-child解释
jQuery中的子元素过滤器nth-child是指:选取每个父元素下的第index个子元素或者奇偶元素(index从1算起) 这里有几点要注意: 1. index 从1开始算 2. 过滤器filter ...
- Netbeans Platform 工程,免安装JDK
使用Netbeans 6.8 创建了一个Netbeans Platform 工程,以Zip形式发布后, 按照以下操作,可 以在客户端免安装JDK: 1. 从已安装JDK的计算机中,提取JDK:eg. ...
- 配置cisco路由器特定时间重启
方法一: Router1#reload in 20 Reload scheduled for 11:33:53 EST Sat Feb 1 2003 (in 20 minutes) Proceed w ...