字典树应用,每个节点上对应的cnt是以它为前缀的单词的数量

#include<stdio.h>
#include<string.h>
struct trie
{
int cnt;
trie *next[];
};
trie *root=new trie;
void insert(char ch[])
{
trie *p=root,*newnode;
for(int i=; ch[i]!='\0'; i++)
{
if(p->next[ch[i]-'a']==)
{
newnode=new trie;
for(int j=; j!=; j++)
{
newnode->next[j]=NULL;
}
newnode->cnt=;
p->next[ch[i]-'a']=newnode;
p=newnode;
}
else
{
p=p->next[ch[i]-'a'];
p->cnt++;
}
}
}
int find(char ch[])
{
trie *p=root;
for(int i=; ch[i]!='\0'; i++)
{
if(p->next[ch[i]-'a']!=NULL)
p=p->next[ch[i]-'a'];
else
return ;
}
return p->cnt;
}
int main()
{
char ch[];
for(int i=; i!=; i++)
{
root->next[i]=NULL;
}
root->cnt=;
while(gets(ch)) //±ØÐëÓÃgets
{
if(!strcmp(ch,"")) break;
insert(ch);
}
while(scanf("%s",ch)!=EOF)
{
printf("%d\n",find(ch));
}
return ;
}

最新文章

  1. Linux历史
  2. 错误 undefined reference to __cxa_guard_acquire/release
  3. 【BZOJ】【1044】【HAOI2008】木棍分割
  4. java_设计模式_组合模式_Composite Pattern(2016-08-12)
  5. Nuget 相关
  6. python学习day10
  7. Cocos2d-x Layout简单使用
  8. [iOS Animation]-CALayer 定时器动画
  9. String str=&quot;abc&quot;;和String str2=new String(&quot;abc&quot;);有什么区别?
  10. CSS效果:简单的登录框
  11. HDU 6348 序列计数 (树状数组 + DP)
  12. Codeforces543 B. Destroying Roads
  13. Python 分布式进程
  14. 23.Hibernate-基础.md
  15. iOS网络请求安全认证(JWT,RSA)
  16. mooc linux学习总结
  17. 【Kafka】Kafka-配置参数详解-参数调优
  18. [Kubernetes]Kubernetes的网络模型
  19. unity-----------------------四元数与欧拉旋转方法
  20. Android 获取联系人和电话号码

热门文章

  1. Bank Interest
  2. AS3.0中用于网络通信的类总结
  3. ios layer 动画
  4. 求最大公约数(GCD)的两种算法
  5. 【我与一道水题的抗争之路】 哈理工2323 Emirp(反素数)
  6. org.hibernate.PropertyNotFoundException: Could not find a getter for employee in class com.itcast.f_hbm_oneToMany.Department
  7. kill -0
  8. Kickstart 自动化安装配置
  9. 登录数据库后,use db很慢的问题
  10. POI获取Excel列数和行数的方法