知道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(字典树)的更多相关文章

  1. hdu 1671 Phone List 字典树

    // hdu 1671 Phone List 字典树 // // 题目大意: // // 有一些电话号码的字符串长度最多是10,问是否存在字符串是其它字符串的前缀 // // // 解题思路: // ...

  2. [ACM] hdu 1671 Phone List (字典树)

    Phone List Problem Description Given a list of phone numbers, determine if it is consistent in the s ...

  3. hdu 1671 Phone List 字典树模板

    Given a list of phone numbers, determine if it is consistent in the sense that no number is the pref ...

  4. hdu 1251 统计难题 (字典树入门题)

    /******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...

  5. HDU 5536 Chip Factory 字典树

    Chip Factory Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  6. HDU 1298 T9(字典树+dfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1298 题意:模拟手机9键,给出每个单词的使用频率.现在给出按键的顺序,问每次按键后首字是什么(也就是要概率最大的 ...

  7. HDU 2846 Repository(字典树,每个子串建树,*s的使用)

    Repository Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  8. hdu 1251 统计难题(字典树)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others) Total Subm ...

  9. HDU 1298 T9【字典树增加||查询】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1298 T9 Time Limit: 2000/1000 MS (Java/Others)    Memo ...

  10. hdu 1251 统计难题 (字典树(Trie)<PS:C++提交不得爆内存>)

    统计难题Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submis ...

随机推荐

  1. OC的构造方法与分类知识点总结

    OC语言构造方法: 用来初始化对象的方法,对象方法,以减号开头 为了让对象创建出来,成员变量就会有一些固定的值 重写构造方法的注意点: 先调用父类的构造方法([super init]) 再进行子类内部 ...

  2. loadrunner监控度量项及中文解释

    1. Number of Concurrent Users (NCU) 并发用户数 – 在指定时刻,系统观察到的并发用户连接数. 2. Request Per Second (RPS) 每秒处理请求数 ...

  3. 简洁vim配置方案Janus(1)

    最近不想在编辑器上花太多的精力,所以找到个不错的解决方案. 在不懂vim配置的前提下也能用的很开心. 1,下载安装Janus(https://github.com/carlhuda/janus) 安装 ...

  4. Dotfuscator类重命名方法解析

    Dotfuscator是专业的.NET程序代码混淆工具,拥有重命名.字符串加密.流程模糊.自定义规则和水印等功能,倍受开发人员喜爱.其中类重命名的使用方法非常普遍,涉及到既要保护代码信息,又要在以后能 ...

  5. 再谈ORACLE CPROCD进程

    罗列一下有关oprocd的知识点 oprocd是oracle在rac中引入用来fencing io的 在unix系统下,假设我们没有採用oracle之外的第三方集群软件,才会存在oprocd进程 在l ...

  6. HTML5表单提示placeholder属性兼容IE

    placeholder 属性提供可描述输入字段预期值的提示信息(hint). 该提示会在输入字段为空时显示,并会在字段获得焦点时消失. 注释:placeholder 属性适用于以下的 <inpu ...

  7. Git工作流:中心工作流(翻译)

    使用Git作为版本控制器,有众多可能的工作流(Workflow),这使得我们这些新鸟不知道在实际工作中不知道该选择哪种工作流.这里我们对最常见的Git工作流做一个对比,为企业团队提供一个参考. 正如你 ...

  8. Effective C++(11) 自我赋值(a=a)时会发生什么?

    问题聚焦: 自我赋值看似有点愚蠢的行为,其实总会发生的 首先:它是合法的, 其次,它不一定是安全的, 再次,它有时候不是那么明显. 先看一个Demo class Widget { ... }; Wid ...

  9. Web应用架构的新趋势

    系统架构:Web应用架构的新趋势---前端和后端分离的一点想法   最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前 ...

  10. 在一般处理文件中访问Session需要添加IRequiresSessionState

    在IHttpHandler 使用Session 通常我们经常,通过session判定用户是否登录.还有一些临时的.重要的数据也尝尝存放在Session中. 在页面我们很容易的得到Session的值,但 ...