hdu-4287 Intelligent IME
2016-02-19 11:22
330 查看
思路:
AC了很爽。一开始看题的时候把要求的东西给搞反了,是用字母去找相应的数字出现次数。
只要用数字构建个Trie树,然后将每次输入进来的字母字符串给转换成数字,然后search一下就可以。
其中要注意end和id的灵活运用
AC代码:
AC了很爽。一开始看题的时候把要求的东西给搞反了,是用字母去找相应的数字出现次数。
只要用数字构建个Trie树,然后将每次输入进来的字母字符串给转换成数字,然后search一下就可以。
其中要注意end和id的灵活运用
AC代码:
#include <iostream> #include <cstring> using namespace std; struct node { int e,id; struct node* next[10]; }; node* root = new node(); char hashs[150]; char str[5007][10]; int ans[5007]; void init() { hashs['a']=hashs['b']=hashs['c']='2'; hashs['d']=hashs['e']=hashs['f']='3'; hashs['g']=hashs['h']=hashs['i']='4'; hashs['j']=hashs['k']=hashs['l']='5'; hashs['m']=hashs['n']=hashs['o']='6'; hashs['p']=hashs['q']=hashs['r']=hashs['s']='7'; hashs['t']=hashs['u']=hashs['v']='8'; hashs['w']=hashs['x']=hashs['y']=hashs['z']='9'; } void insert(char* s,int mark) { node* p = root; for(;*s!='\0';s++) { int n = *s-'0'; if(p->next == NULL) p->next = new node(); p = p->next ; } p->e = 1; p->id = mark; } void search(char* s) { node* p = root; for(;*s!='\0';s++) { int n = *s-'0'; if(p->next == NULL) return ; p = p->next ; } if(p->e == 1) ans[p->id]++; } int main() { int i,j,k; init(); int T; cin>>T; while(T--) { memset(ans,0,sizeof(ans)); int n,m; cin>>n>>m; for(i = 0;i < n;i++) { cin>>str[i]; insert(str[i],i); } char tmp[10]; for(j = 1;j <= m;j++) { cin>>tmp; for(k = 0;k < strlen(tmp);k++) tmp[k] = hashs[tmp[k]]; search(tmp); } for(i = 0;i < n;i++) cout<<ans[i]<<endl; } return 0; }
相关文章推荐
- Vue + webpack 项目实践
- ionic 实现微信朋友圈分享的完整开发流程
- UISearchController的简单实用
- 自定义 C++ 中的 range() 函数
- onAttachedToWindow()在整个Activity生命周期的位置及使用
- 【配置属性】—Entity Framework实例详解
- 【GDKOI 2016】模拟训练总结合集
- 面试3 -- Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
- UIDocumentInteractionController 第三方应用中打开自己的文件 方法
- MySQL主从搭建
- getc、fgetc、getchar、ungetc
- jquery获取input的值
- CAAnimation抽象类及子类的详解
- 在新浪SAE上部署应用实战心得
- JVM加载class文件的原理机制
- Unicode与中文转化
- Java Map 按key排序和按Value排序
- java继承中,成员变量的覆盖
- java collection
- android学习笔记(一)