题意:

给你m个字符串,每一个字符对应一个数字,如下:

2 : a, b, c    3 : d, e, f    4 : g, h, i    5 : j, k, l    6 : m, n, o     7 : p, q, r, s    8 : t, u, v    9 : w, x, y, z

输入n个数字串,问这个数字串可以对应几个字符串

比如ade这个字符串对应的数字串就是233

题解:

用这m个字符串建立一颗字典树,对于每一个节点维护一个变量val,他就代表(从树根到这个节点这一个数字串)有多少个对应的字符串

每次插入的时候记录一下最大值就完了

代码:

 1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <cstdlib>
5 #include <algorithm>
6 using namespace std;
7 typedef struct Trie* TrieNode;
8 char s[130];
9 char v[5005][10];
10 struct Trie
11 {
12 int val;
13 TrieNode next[8];
14 Trie()
15 {
16 val = 0;
17 memset(next,NULL,sizeof(next));
18 }
19 };
20
21 void inserts(TrieNode root,char ss[10])
22 {
23 TrieNode p = root; //建立的字典树是字符串对应的数字串
24 int len=strlen(ss);
25 for(int i=0;i<len;++i)
26 {
27 int temp=s[ss[i]];
28 if(p->next[temp]==NULL) p->next[temp]=new struct Trie();
29 p=p->next[temp];
30 }
31 p->val+=1;
32 }
33
34 int query(TrieNode root,char ss[10])
35 {
36 TrieNode p = root;
37 int len=strlen(ss);
38 for(int i=0;i<len;++i)
39 {
40 int temp=ss[i]-'0'-2;
41 if(p->next[temp]==NULL)
42 {
43 //printf("%d**\n",i);
44 return 0;
45 }
46 else
47 {
48 p=p->next[temp];
49 }
50 }
51 return p->val;
52 }
53
54 void Del(TrieNode root)
55 {
56 for(int i=0 ; i<8 ; ++i)
57 {
58 if(root->next[i])Del(root->next[i]);
59 }
60 delete(root);
61 }
62
63 int main()
64 {
65 s['a']=s['b']=s['c']=0;
66 s['d']=s['e']=s['f']=1;
67 s['g']=s['h']=s['i']=2;
68 s['j']=s['k']=s['l']=3;
69 s['m']=s['n']=s['o']=4;
70 s['p']=s['q']=s['r']=s['s']=5;
71 s['t']=s['u']=s['v']=6;
72 s['w']=s['x']=s['y']=s['z']=7;
73 int t,n,m;
74 char ss[10];
75 scanf("%d",&t);
76 while(t--)
77 {
78 TrieNode root = new struct Trie();
79 scanf("%d %d",&n,&m);
80 for(int i=0 ; i<n ; ++i)
81 {
82 scanf("%s",v[i]);
83 }
84 for(int i=0 ; i<m ; ++i)
85 {
86 scanf("%s",ss);
87 inserts(root,ss);
88 }
89 for(int i=0;i<n;++i)
90 {
91 printf("%d\n",query(root,v[i]));
92 }
93 Del(root);
94 }
95 return 0;
96 }

Intelligent IME HDU - 4287 字典树的更多相关文章

  1. HDU 5687 字典树插入查找删除

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5687 2016百度之星资格赛C题,直接套用字典树,顺便巩固了一下自己对字典树的理解 #include< ...

  2. HDU 5384 字典树、AC自动机

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5384 用字典树.AC自动机两种做法都可以做 #include<stdio.h> #includ ...

  3. hdu 2112(字典树+最短路)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. hdu 2072(字典树模板,set,map均可做)

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=2072 lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词 ...

  5. Chip Factory HDU - 5536 字典树(删除节点|增加节点)

    题意: t组样例,对于每一组样例第一行输入一个n,下面在输入n个数 你需要从这n个数里面找出来三个数(设为x,y,z),找出来(x+y)^z(同样也可以(y+z)^1)的最大值 ("^&qu ...

  6. hdu 1251 字典树的应用

    这道题看了大神的模板,直接用字典树提交的会爆内存,用stl 里的map有简单有快 #include <iostream> #include <map> #include < ...

  7. hdu 2896 字典树解法

    #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> ...

  8. Repository HDU - 2846 字典树

    题意:给出很多很多很多很多个 单词 类似搜索引擎一下 输入一个单词 判断有一个字符串包含这个单词 思路:字典树变体,把每个单词的后缀都扔字典树里面,这里要注意dd是一个单词 但是把d 和dd都放字典树 ...

  9. Phone List HDU - 1671 字典树

    题意:给出一堆一组一组的数字  判断有没有哪一个是另外一个的前缀 思路:字典树 插入的同时进行判断  不过 当处理一组数字的时候 需要考虑的有两点1.是否包含了其他的序列2.是否被其他序列包含 刚开始 ...

随机推荐

  1. 技术基础 | Cassandra RBAC助你打击“虚拟海盗”,让他们对数据“战利品”望而不得

    现如今,我们称虚拟世界里的海盗们为"黑客",他们所追寻的战利品就是在你数据库某处的数据.   而我们能够保证你的数据安全的工具之一,就是"Cassandra基于角色的访问 ...

  2. Java开发手册之设计规约

    1.谨慎使用继承的方式来进行扩展,优先使用聚合/组合的方式来实现.说明:不得已使用继承的话,必须符合里氏代换原则,此原则说父类能够出现的地方子类一定能够出现,比如,"把钱交出来", ...

  3. docker 报错: Cannot connect to the Docker daemon at unix:///var/run/docker.sock.

    最近在 Windows 子系统 WSL 上面安装了一个 ubuntu18.04, 安装完docker 跑 hello-world 的时候报错了 docker: Cannot connect to th ...

  4. kubernets之pv以及pvc

    一 持久卷以及持久卷声明的由来 由于不管是哪种卷,开发者都需要提前预知kubernets集群里面的存储类型,这样就在一定程度上违背了kubernets集群的设计理念,kubernets的设计理念是在由 ...

  5. postgresql中权限介绍

    postgresql权限分为实例的权限,数据库的权限,模式的权限,对象的权限,表空间的权限 实例的权限:由pg_hba.conf文件控制,控制那些用户那些IP以哪种方式连接数据库 数据库的权限:是否允 ...

  6. 企业项目迁移go-zero全攻略(一)

    作者:Mikael 最近发现 golang 社区里出了一个新兴的微服务框架.看了一下官方提供的工具真的很好用,只需要定义好 .api 文件模版代码都可以一键生成,只需要关心业务:同时 core 中的工 ...

  7. 登陆到 SAP 系统后的用户出口

    增强类型:smod 增强名称:SUSR0001 组件(退出功能模块):EXIT_SAPLSUSF_001 功能:用户每次登陆SAP系统后都会调用这个SUSR0001增强,可以在FUNCTION EXI ...

  8. Spring 是如何解决循环依赖的?

    前言 相信很多小伙伴在工作中都会遇到循环依赖,不过大多数它是这样显示的: 还会提示这么一句: Requested bean is currently in creation: Is there an ...

  9. spring源码分析之玩转ioc:bean初始化和依赖注入(一)

    最近赶项目,天天加班到十一二点,终于把文档和代码都整完了,接上继续整. 上一篇聊了beanProcess的注册以及对bean的自定义修改和添加,也标志着创建bean的准备工作都做好了,接下来就是开大招 ...

  10. Flutter--Flutter中Widget、App的生命周期

    前言 在App的开发过程中,我们通常都需要了解App以及各个页面的生命周期,方便我们在App进入前台时启动一些任务,在进入后台后暂停一些任务.同时,各个页面的生命周期也很重要,每个页面消失时要做一些内 ...