hdu 1251 统计难题 (trie树)
来源:互联网 发布:linux cgroups 编辑:程序博客网 时间:2024/05/16 17:31
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1251
不怎么写结构体,这回终于好好复习了下。
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct node{ /*typedef可以将struct node写为简单的trie,node*/ struct node*next[26]; /*指向下个node的指针*/ bool exist; int count; }*trie,node; //*trie为指向自己的指针变量。虽然不知定义上node是何意,但貌似大家都这么写~~· trie root; void creat(trie &p){ /*定义p为结构指针,为结构体的首地址。(*&p=p) */ p=(trie)malloc(sizeof(node)); /*p是trie类型的,如果不加(trie)则默认返回void类型的,所以要强制转化*/ for(int i=0;i<26;i++) /*把26个指向孩子的指针赋为0*/ p->next[i]=0; p->exist=false; p->count=0; } void insert(trie p,char s[]){ int k=0 ; while(s[k]!='\0'){ if(!p->next[s[k]-'a']){ /*插入时若下一个为空,则建个新的*/ trie q; creat(q); p->next[s[k]-'a']=q; /*s[k]所代表字母指向新建的节点*/ } p=p->next[s[k]-'a']; /*指针向下移*/ k++; } p->count++; p->exist=true; } int find(trie p,char s[]){ int k=0; while(s[k]!='\0'&&p->next[s[k]-'a']){ p=p->next[s[k]-'a']; k++; } if(s[k]=='\0') return p->count; else return 0; } int main(){ char str[11]; bool flag=false; creat(root); /*初始化根节点*/ while(gets(str)){ if(flag) printf("%d\n",find(root,str)); else if(strlen(str)!=0){ insert(root,str); } else{ flag=true; } } return 0; }
阅读全文
0 0
- hdu 1251 统计难题(trie树)
- hdu 1251 统计难题 (trie树)
- hdu 1251 统计难题//trie树
- hdu 1251 统计难题 trie树
- HDU 1251 统计难题(字典树Trie)
- HDU 1251 统计难题 (Trie树)
- hdu 1251 统计难题 【Trie树】
- HDU 1251 统计难题 trie树
- hdu 1251 统计难题 Trie树
- HDU 1251 - 统计难题 (Trie)
- HDU 1251 统计难题 (Trie)
- HDU 1251 统计难题 字典树入门(Trie)
- HDU 1251 统计难题 (字符串-Trie树)
- HDU 1251 统计难题(trie树入门)
- (字典树Trie Tree)HDU 1251 统计难题
- hdu 1251统计难题(trie)
- hdu 1251 统计难题 Trie
- hdu 1251 统计难题(trie)
- 栈/队列/贪心
- 算法竞赛入门经典 第一章的练习题
- MySql 配置URL参数说明
- 一个监听home键锁屏键的工具类
- tomcat集群共享session(nginx+redis)
- hdu 1251 统计难题 (trie树)
- LeetCode-367. Valid Perfect Square (Java)
- 使用QUdpSocket时编译出错的问题
- SDN控制器之OVN实验五:配置OVN网络安全功能(ACL)
- 二分法程序实现
- 自定义View-自动换行的标签控件
- 第7节-Linux账户与文件目录权限
- 特征工程知识笔记
- WatchDog工作原理