hdu1251 字典树
2015-07-29 22:58
260 查看
#include<stdio.h> #include<stdlib.h> #include<string.h> #define maxn 26//26个字母 struct trie { trie *next[maxn];//向下26个字母扩展 int v;//记录个数 }; trie *root; void init() { root=(trie*)malloc(sizeof(trie)); for(int i=0;i<maxn;i++) root->next[i]=NULL; root->v=0; } void creattrie(char *str) { trie *p,*q; p=root; int i,j; int len=strlen(str); for(i=0;i<len;i++) { int id=str[i]-'a'; if(p->next[id]==NULL) { q = (trie *)malloc(sizeof(trie)); q->v=0; for(j=0;j<maxn;j++) q->next[j]=NULL; p->next[id]=q; } p=p->next[id]; p->v++;//次数增加 } } int query(char *str) { int i,j; int len=strlen(str); trie *p=root; for(i=0;i<len;i++) { int id=str[i]-'a'; if(p->next[id]==NULL) return 0; p=p->next[id]; } return p->v; } int main() { char str[15]; int i,j; init(); while(gets(str)) { if(strcmp(str,"")==0)break; creattrie(str); } while(gets(str)) { if(strcmp(str,"")==0)break; printf("%d\n",query(str)); } }
相关文章推荐
- css hack
- php开启openssl的方法
- excel的处理
- 项目常用的linux命令
- Update指定更新数据影响行数
- 编写 Matlab mexFunction (C mex)
- java基础小知识(2)
- IOS读取文件类和常用方法
- 各种跟16进制相关的转换问题
- 编程之美----扩展问题
- linux内存映射mmap原理分析
- 酷融贷官网
- MySQL之索引
- java中的线程使用详解
- 欢迎使用CSDN-markdown编辑器
- struts2拦截器转化敏感字符
- easyui的datebox限定范围
- 安装和升级--基础--许可证信息--title and Copyright information
- Java小技巧-巧用枚举类型处理判断
- $id + 0x80000000是什么意思?