字典树
来源:互联网 发布:如何提高淘宝动态评分 编辑:程序博客网 时间:2024/06/06 09:14
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;const int N=2*1e5+10;int n,m,q,k,j;struct Dictree//字典树{ int cont;//单词出现次数 struct Dictree *tree[26];//26个子节点}*a;//a为头结点是空的void init(){ a=new Dictree; for(int i=0; i<26; ++i) //子节点置空 { a->tree[i]=NULL; }}void Insert(string str)//建树{ int len,j; Dictree *head=a;//head是头指针 len=str.size(); for(int i=0; i<len; ++i) { j=(int)(str[i]-'a'); if(head->tree[j]==NULL)//如果没有这个字母 { head->tree[j]=new Dictree; head=head->tree[j]; head->cont=1;//该节点值初始化 for(int k=0; k<26; k++)//子节点置空 head->tree[k]=NULL; } else { head=head->tree[j]; head->cont++; } }}int Find(string str){ int len=str.size(); Dictree *head=a; for(int i=0; i<len; i++)//找字符串是否在树中出现过 { j=(int)(str[i]-'a'); if(head->tree[j]!=NULL) head=head->tree[j]; else//如果该字符没有则说明树中没有该字符串 return 0; } return head->cont;//找到后返回有多少个}int main(){ init(); int n; while(~scanf("%d",&n)) { string str; for(int i=0; i<n; i++) { cin>>str; Insert(str); } int m; cin>>m; for(int i=0; i<m; i++) { cin>>str; int sum=Find(str); printf("%d\n",sum); } }}
0 0
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树。。
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- Unity中的各种寻找GameObject方法
- Fragment与Activity之间跳转动画
- 《OpenCV3编程入门》学习笔记六:图像处理
- 12.1.1.0 Adapter 错误【OGG-02171】,【OGG-02188】解决办法
- Android仿淘宝订单页面实现
- 字典树
- c++智能指针关联容器应用实例:文本查询程序
- 最长递增子序列(nlogn),最长公共子串(连续),最长公共子序列(不连续)
- Android学习——开发环境搭建
- java文本框
- java网络编程之TFTP(一)
- 51单片机—用蜂鸣器播放音乐
- ARM 平台上编译安装qt
- Linux中用free命令查看内存占用情况