hdu 1671 Phone List(字典树)
知道bug的时候我眼泪掉下来。。。
我的第一道字典树,看了字典树的注意事项和实现方式,我写这道题的时候格外认真,就是奔着1A去的。结果这是几A来着?
第一遍写的时候提交MLA,我看了一下,是因为我释放内存的函数写的有问题,‘==’写成了‘=’。修改之后提交wa,这个我就想不明白了,我可是测试了很多组数据的。
之后又尝试性的做了一个小小地修改,再次提交还是wa。然后是各种思考bug,想了好久突然想到我是用数字输入的,这样的话前导0会被忽略掉。
我的1A就这么没了。
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define N 15
struct node
{
node* a[10];
int flag;
};
node *root;
int InsertTree(char *ss)
{
int k,mark[15];
int ln;
ln=strlen(ss);
k=0;
int i;
for(i=ln-1;i>=0;i--)
mark[k++]=ss[i]-'0';
node *cur=root;
node *s;
int flag=0;
for(i=k-1;i>=0;i--)
{
if(i!=0)
{
if(cur->flag==1)
{
flag=1;
break;
}
if(cur->a[mark[i]]!=NULL&&cur->a[mark[i]]->flag!=1)
cur=cur->a[mark[i]];
else if(cur->a[mark[i]]!=NULL&&cur->a[mark[i]]->flag==1)
{
flag=1;
break;
}
else
{
s=(node *)malloc(sizeof(node));
memset(s->a,0,sizeof(s->a));
cur->a[mark[i]]=s;
s->flag=0;
cur=s;
}
}
else
{
if(cur->a[mark[i]]!=NULL)
{
flag=1;
break;
}
else
{
s=(node *)malloc(sizeof(node));
memset(s->a,0,sizeof(s->a));
cur->a[mark[i]]=s;
s->flag=1;
cur=s;
}
}
}
return flag;
}
void Free(node *root)
{
if(root->flag==1)
free(root);
else
{
int i;
for(i=0;i<=9;i++)
{
if(root->a[i]!=NULL)
Free(root->a[i]);
}
free(root);
}
return ;
}
int main()
{
int T;
scanf("%d",&T);
char s[15];
while(T--)
{
int n;
scanf("%d",&n);
getchar();
root=(node *)malloc(sizeof(node));
memset(root->a,0,sizeof(root->a));
root->flag=0;
int flag=0;
while(n--)
{
int x;
gets(s);
if(InsertTree(s))
flag=1;
}
if(flag)
printf("NO\n");
else
printf("YES\n");
Free(root);
}
return 0;
}
hdu 1671 Phone List(字典树)的更多相关文章
- hdu 1671 Phone List 字典树
// hdu 1671 Phone List 字典树 // // 题目大意: // // 有一些电话号码的字符串长度最多是10,问是否存在字符串是其它字符串的前缀 // // // 解题思路: // ...
- [ACM] hdu 1671 Phone List (字典树)
Phone List Problem Description Given a list of phone numbers, determine if it is consistent in the s ...
- hdu 1671 Phone List 字典树模板
Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...
- hdu 1251 统计难题 (字典树入门题)
/******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...
- HDU 5536 Chip Factory 字典树
Chip Factory Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- HDU 1298 T9(字典树+dfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1298 题意:模拟手机9键,给出每个单词的使用频率.现在给出按键的顺序,问每次按键后首字是什么(也就是要概率最大的 ...
- HDU 2846 Repository(字典树,每个子串建树,*s的使用)
Repository Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- hdu 1251 统计难题(字典树)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Subm ...
- HDU 1298 T9【字典树增加||查询】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1298 T9 Time Limit: 2000/1000 MS (Java/Others) Memo ...
- hdu 1251 统计难题 (字典树(Trie)<PS:C++提交不得爆内存>)
统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submis ...
随机推荐
- UIButton UIImage 用法分析
一.UIButton和UIImageView的区别 1.显示图片 1> UIImageView只能显示一种图片(图片默认会填充整个UIImageView) image\setImage: 2&g ...
- CreateMutex
C++ API CreateMutex 找出当前系统是否已经存在指定进程的实例.假设没有则创建一个相互排斥体.CreateMutex()函数可用来创建一个有名或无名的相互排斥量对象. HANDLE C ...
- MySQL 一般查询日志(General Query Log)
与大多数关系型数据库,日志文件是MySQL数据库的一个重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志.慢查询日志,等等. 这些日志能够帮助我们定位mysqld ...
- JAVA学习篇--Java类加载
由来: 与普通程序不同的是,Java程序(class文件)并非本地的可执行程序(解释性语言). 当执行Java程序时.首先执行JVM(Java虚拟机),然后再把Javaclass载入到JVM里头执行, ...
- Mybatis包分页查询java公共类
Mybatis包分页查询java公共类 分页----对于数据量非常大的查询中.是不可缺少的. mybatis底层的分页sql语句因为须要我们自己去手动写.而实现分页显示的时候我们须要依据分页查询条 ...
- Visual Studio 2013进行单元测试
使用Visual Studio 2013进行单元测试--初级篇 1.打开VS2013 --> 新建一个项目.这里我们默认创建一个控制台项目.取名为UnitTestDemo 2.在解决方案里面 ...
- Canvas入门(3):图像处理和渲染文本
资源:http://www.ido321.com/997.html 一.图像处理(非特别说明,全部结果均来自最新版Google) 在HTML 5中,不仅能够使用Canvas API绘制图形,也能够用于 ...
- 远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像
远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像: 一 : 首先要了解bmp图像的结构 详情请看我转载的一篇文章http://blog.csdn.net/hnust_x ...
- [Dev Blog] KCV插件 —— Provissy Tools 。
承蒙各位支持! 正式版已推出,请前往http://tieba.baidu.com/p/3398574166 或者前往:http://provissy.com/?p=7 请不要在这里回复,我无法保证回复 ...
- FineUI开发实践
ASP.NET-FineUI开发实践-7 摘要: 下拉显示grid列表.其实很简单,但是试了很多方法,水平有限,主要是都不好使,还是简单的好使了,分享下.先是看了看网上的,是直接写个了extjs控件类 ...