HDU1251统计难题(字典树模板)

来源:互联网 发布:店铺记账软件 编辑:程序博客网 时间:2024/05/15 11:18

先来百度百科对字典树的介绍:

       字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。

字典树的根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串; 每个节点的所有子节点包含的字符都不相同。

字典树的应用有串的快速检索、串排序、串的最长公共前缀。

统计难题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251

字典树模板就能过的题,下面是AC代码

#include <iostream>#include <cstring>#pragma warning(disable:4996)using namespace std;/*num记录有几个单词通过当前结点   mark标记是否为一个单词的结束位置*/struct node{int num;node *son[26];bool mark;};node a[1000000];int cnt = 0;/*初始化结点结构体*/void clearnode(node *p){p->num = 0;p->mark = false;for (int i = 0; i < 26; i++)p->son[i] = NULL;}/*插入函数*/void insert(node *root, char *s){node *p = root;int len = strlen(s);for (int i = 0; i < len; i++){int id = s[i] - 'a';if (p->son[id] == NULL){      //找不到相应的字母结点时新建一个结点cnt++;clearnode(&a[cnt]);p->son[id] = &a[cnt];}p->son[id]->num++;p = p->son[id];}p->mark = true;}/*查找函数*/int findstr(node *root, char *s){node *p = root;int len = strlen(s);for (int i = 0; i < len; i++){int id = s[i] - 'a';if (p->son[id] != NULL)p = p->son[id];elsereturn 0;}return p->num;}int main(){char s[12];clearnode(&a[0]);node * root = &a[0];while (gets(s) && s[0])insert(root, s);while (gets(s))cout << findstr(root, s) << endl;return 0;}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老鼠死在空调里怎么办 公务员老公四十岁想辞职怎么办 打胎5次又怀孕怎么办 墙纸颜色太淡了怎么办 皮子腺囊肿有点疼痛怎么办 地板颜色选浅了怎么办 地板买的太暗了怎么办 木地板贴好后发现颜色不好看怎么办 鞋上鞋扣老是开怎么办 虚拟机的win10蓝屏重启怎么办 fs免拆模板专利怎么办 新买的床咯吱响怎么办 实木床一动就响怎么办 cad图纸是斜的怎么办 老房子土墙腻子老掉怎么办 生完孩子子宫大怎么办 刚开的店没人怎么办 刚开业的店没人怎么办 美容店没人进店怎么办 新店开业招不到营业员怎么办 无意开通了花呗怎么办? 花呗灰色用不了怎么办 花呗逾期用不了怎么办 店铺花呗关闭了怎么办 花呗无法使用了怎么办 借呗自动关闭了怎么办 蚂蚁花呗无法开通怎么办 花呗本月还不了怎么办 蚂蚁借呗没钱还怎么办 淘宝账号被限制登录怎么办 辱骂买家被投诉骚扰怎么办 淘宝卖家骚扰买家怎么办 被淘宝卖家电话骚扰怎么办 闲鱼卖东西买家退货运费怎么办 淘宝被恶意拍单怎么办 炒作信用度评价被删除怎么办 删除淘宝评价之后卖家不返现怎么办 美团客户给差评怎么办 淘宝卖家评价差怎么办 淘宝卖家发货未揽收怎么办 周不过5我超过了怎么办