博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1251 统计难题
阅读量:6803 次
发布时间:2019-06-26

本文共 1597 字,大约阅读时间需要 5 分钟。

    找前缀个数。主要是理解trie树的含义吧,统计一个节点出现的次数就可以了。

1 #include
2 #include
3 #include
4 #define MAXNUM 26 5 typedef struct tnode 6 { 7 int mark,count; 8 tnode *next[MAXNUM]; 9 10 }tnode;11 tnode *root;12 void init()13 {14 int i;15 root=(tnode*)malloc(sizeof(tnode));16 for(i=0;i
next[i]=NULL;18 root->mark=0;19 20 }21 void insert(char *str)22 {23 tnode *r=root,*child;24 int i,flag=0;25 while(*str!='\0')26 {27 if(r->next[*str-'a']==NULL)28 { flag=1;29 child=(tnode*)malloc(sizeof(tnode));30 for(i=0;i
next[i]=NULL;32 child->mark=0;33 child->count=0;34 r->next[*str-'a']=child;35 36 37 }38 r->next[*str-'a']->count++;39 r=r->next[*str-'a'];40 str++;41 42 }43 44 r->mark=1;45 46 }47 void del(tnode *r)48 {49 for(int i=0;i
next[i]!=NULL)52 del(r->next[i]);53 }54 free(r);55 }56 int search(char *str)57 {58 tnode *r=root;59 int i,len;60 len=strlen(str);61 i=0;62 while(r->next[*str-'a']!=NULL)63 {64 if(i==len-1) return r->next[*str-'a']->count;65 r=r->next[*str-'a'];66 str++;67 i++;68 69 }70 return 0;71 }72 73 int main()74 {75 char str[15];76 int count;77 gets(str);78 init();79 while(strcmp(str,"")!=0)80 {81 insert(str);82 gets(str);83 }84 while(scanf("%s",str)!=EOF)85 {86 count=search(str);87 printf("%d\n",count);88 89 }90 91 92 93 94 95 return 0;96 }

 

转载于:https://www.cnblogs.com/leeshum/archive/2013/04/17/3027122.html

你可能感兴趣的文章
世界历史教科书-九年级上册.pdf
查看>>
LDAP Authentication for openNebula3.2
查看>>
C++ STL 学习笔记__(6)优先级队列priority_queue基本操作
查看>>
Max user processes limits
查看>>
APP 上线-打包上传环境配置(接上篇)
查看>>
图片垂直居中,兼容ie6
查看>>
iOS--资料--开源项目及库
查看>>
MBR(Master Boot Record)主引导记录分析
查看>>
词汇小助手V1.1——引入自动翻译和在线词典功能
查看>>
委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件
查看>>
国债期货下跌意味着什么
查看>>
抽象类的应用——汽车租赁系统
查看>>
Voilin 与 乐谱
查看>>
一键U盘装系统
查看>>
最新版SDWebImage的使用
查看>>
C 二维数组与指针
查看>>
node c++ addon注意事项
查看>>
hdu 3501(欧拉函数引申)
查看>>
django-request获取数据
查看>>
python的eval、exec函数使用总结
查看>>