hdu 1251 1671字典树
来源:互联网 发布:金蝶软件下载中心 编辑:程序博客网 时间:2024/05/29 11:50
发现没有字典树的模板,找了下HDU1251算最裸的题了
字典树真是个很厉害的东西。。。
MALLOC分配空间记得要FREE 像我1671就MLE了= =
HDU 1251
#include<stdio.h>#include<string.h>#include<stdlib.h>struct dictree{ struct dictree*child[26]; int n;};struct dictree *root;void insert(char *source){ int len,i,j; struct dictree *cur,*newnode; len=strlen(source); if(len==0) return ; cur=root; for(i=0;i<len;i++) { if(cur->child[source[i]-'a']!=0) { cur=cur->child[source[i]-'a']; cur->n=cur->n+1; } else { newnode=(struct dictree *)malloc(sizeof(struct dictree)); for(j=0;j<26;j++) newnode->child[j]=0; cur->child[source[i]-'a']=newnode; cur=newnode; cur->n=1; } }}int find(char *source){ int i,len; struct dictree *cur; len=strlen(source); if(len==0) return 0; cur=root; for(i=0;i<len;i++) { if(cur->child[source[i]-'a']!=0) cur=cur->child[source[i]-'a']; else return 0; } return cur->n;}int main(){ char tmp[11]; int i,j; root=(struct dictree *)malloc(sizeof(struct dictree)); for(i=0;i<26;i++) root->child[i]=0; while(gets(tmp)&&strlen(tmp)!=0) insert(tmp); while(scanf("%s",tmp)!=EOF) { i=find(tmp); printf("%d\n",i); } return 0;}
hdu 1671
#include<stdio.h>#include<string.h>#include<stdlib.h>struct dictree{ struct dictree*child[10]; int n;};struct dictree *root;void build(char *src){ int i,j; int len=strlen(src); struct dictree *cur,*newnode; cur=root; for(i=0;i<len;i++) { if(cur->child[src[i]-'0']!=0) { cur=cur->child[src[i]-'0']; cur->n=cur->n+1; } else { newnode=(struct dictree *)malloc(sizeof(struct dictree)); for(j=0;j<10;j++) newnode->child[j]=0; cur->child[src[i]-'0']=newnode; cur=newnode; cur->n=1; } }}void freedom(struct dictree *p){ for(int i=0;i<10;i++) { if(p->child[i]!=0) freedom(p->child[i]); } free(p);}int find(char *src){ int i,j,len; len=strlen(src); struct dictree *cur; cur=root; for(i=0;i<len;i++) { if(cur->child[src[i]-'0']!=0) cur=cur->child[src[i]-'0']; else return 0; if(cur->n>1&&i==(len-1)) return 1; } return 0;}int main(){ int T,t; scanf("%d",&T); while(T--) { scanf("%d",&t); int i,j; char s[10100][12]; root=(struct dictree *)malloc(sizeof(struct dictree)); for(i=0;i<10;i++) root->child[i]=0; for(i=0;i<t;i++) { scanf("%s",s[i]); build(s[i]); } int flag=0; for(i=0;i<t;i++) { if(find(s[i])==1) { flag=1; break; } } if(flag) printf("NO\n"); else printf("YES\n"); freedom(root); } return 0;}
hdu 1671
- hdu 1251 1671字典树
- hdu 1251+hdu 1671(字典树)
- hdu 1671 字典树
- HDU 1671 字典树
- HDU 1671 字典树
- hdu 1671 字典树
- hdu 1671 字典树
- HDU 1671 字典树
- HDU 1671 字典树
- hdu 1671 字典树
- HDU 1671 字典树
- hdu 1251(字典树)
- hdu 1251 字典树
- HDU 1251 字典树
- hdu 1251 字典树
- hdu 1251 字典树
- HDU-1251,字典树
- HDU 1251 字典树
- hdu 4289 Control (成都网络赛最小割)
- BBC私房药药方收集
- 为什么这么多半导体公司都重视大学计划?
- VF修改DBF--菜鸟详情经历
- IE6、 IE7、IE8、IE9、Firefox兼容性问题
- hdu 1251 1671字典树
- Linux的脚本自动交互
- Linux 一条命令删除某端口被占用的进程
- 12306网站和电话订火车票操作技巧
- JWFD开源项目需要改进的地方
- android学习之-5种数据存储方式
- ORACLE 中IMP命令
- c#解析json文件的方法
- Logitech M515 disable proximity sensor