
【Trie树】Ybt_前缀统计
发布日期:2021-05-07 22:47:33
浏览次数:22
分类:精选文章
本文共 1011 字,大约阅读时间需要 3 分钟。
题目大意
给n个字符串。
再给m个字符串,要你求前n个字符串有多少个是当前字符串的前缀。解
Trie树。详见代码。
代码
#include#include #include #include using namespace std;int n, m, len, w, f[1000009][30], End[1000009], ans, tot;char ch;string s;int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= n; ++i) { cin >> s; len = s.size(); w = 0; //建一个0点用于出发... for (int j = 0; j < len; ++j) { ch = s[j] - 'a'; if (f[w][ch] == 0) //w号点是否后面有连向的字符ch?否。 f[w][ch] = ++tot; //新建一个点tot,w号点连点tot。(tot点代表字符ch) w = f[w][ch]; //走向下一个点 } ++End[w]; //标记结尾 } for (int i = 1; i <= m; ++i) { cin >> s; len = s.size(); w = ans = 0; for (int j = 0; j < len; ++j) { ch = s[j] - 'a'; if (f[w][ch] == 0) //如果已经没有前缀到w的点了 break; //直接退出 w = f[w][ch]; //往后走一个点 ans += End[w]; //加上以这个点为结尾的子串数 } printf("%d\n", ans); //输出 }}
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月14日 05时41分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
[网站公告]11月26日00:00-04:00阿里云RDS升级
2021-05-09
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2021-05-09
云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了
2021-05-09
上周热点回顾(6.9-6.15)
2021-05-09
上周热点回顾(10.20-10.26)
2021-05-09
上周热点回顾(2.16-2.22)
2021-05-09
上周热点回顾(3.2-3.8)
2021-05-09
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2021-05-09
上周热点回顾(7.27-8.2)
2021-05-09
上周热点回顾(5.9-5.15)
2021-05-09
上周热点回顾(1.16-1.22)
2021-05-09
上周热点回顾(1.23-1.29)
2021-05-09
上周热点回顾(3.20-3.26)
2021-05-09
上周热点回顾(6.19-6.25)
2021-05-09
云计算之路-阿里云上:docker swarm 集群故障与异常
2021-05-09
上周热点回顾(2.19-2.25)
2021-05-09
云计算之路-阿里云上:博客web服务器轮番CPU 100%
2021-05-09
云计算之路-阿里云上:服务器CPU 100%问题是memcached连接数限制引起的
2021-05-09
上周热点回顾(3.26-4.1)
2021-05-09