博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu-1251
阅读量:6078 次
发布时间:2019-06-20

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

思路:

Trie树模板的小变形,在模板中有一个思维拓展的点要值得我们注意,就是每一个节点的e值,在本题中他们不再用来标记单词的结尾,而是用来计数,因为对于Trie树的某一个确定的位置,一个给定的单词只能走过一遍,因此这样记录可以确定一个位置被多少个单词给“经过”,然后找前缀的时候只要遍历到的最后一个字母所在的位置,输出他的count即可。

 

AC代码:

#include 
#include
#include
using namespace std;struct node{ int e; struct node* next[26]; node() { e = 0; for(int i = 0;i <= 25;i++) next[i] = NULL; }};node* root;char str[100007][17];char cs[100007][17];void Insert(char* s){ node* p = root; for(;*s != '\0';s++) { int n = *s-'a'; if(p->next[n] == NULL) p->next[n] = new node(); p = p->next[n]; p->e++; }}int find(char* s){ node* p = root; for(;*s!='\0';s++) { int n = *s-'a'; if(p->next[n] == NULL) return 0; p = p->next[n]; } return p->e;}int main(){ int i,j; i = 0; j = 0; root = new node(); while(gets(str[i]),strcmp(str[i],"")) Insert(str[i++]); while(scanf("%s",cs[j]) != EOF) cout<
<

 

转载于:https://www.cnblogs.com/immortal-worm/p/5197133.html

你可能感兴趣的文章
【活动】掘金技术征文丨给大家看的 Julia 教程
查看>>
推荐Android两种屏幕适配方案
查看>>
HTML5前端面试常见问题汇总
查看>>
HTTP2 基础入门
查看>>
让数据传输更安全
查看>>
实现一个requirejs原型demo
查看>>
画一个三角形
查看>>
node ( 5 ) -----process详解(这个标题不讨喜……)
查看>>
浅谈unicode编码和utf-8编码的关系
查看>>
云栖专辑|阿里开发者们的第二个感悟:PG大V德哥的使命感与开放心态
查看>>
分布式定时任务中间件架构及其实现(附GitHub开源地址)
查看>>
理解Angular的providers - 给Http添加默认headers
查看>>
Ionic2入门教程 实现TodoList App-1 初识Ionic2
查看>>
Windows下搭建Git服务器(使用Gitblit)
查看>>
最新版本支付宝与微信支付集成与使用
查看>>
Python 用Django创建自己的博客(1)
查看>>
Activity的启动过程第三篇
查看>>
不能错过的web前端性能优化总结
查看>>
iOS开发中MQTTKit的TLS SSL支持方案
查看>>
mac软件备份
查看>>