poj 1451 || hdu 1298 T9
来源:互联网 发布:安腾软件 编辑:程序博客网 时间:2024/04/29 21:47
题目大意:一道模拟手机输入法的题目,输入每个单词以及出现的频率,最后给你一串数字代表用户输入的,按照长度足够输出显示的单词。
思路:根据单词建立字典树,然后对于每个长度进行dfs找到最大频率的单词。
#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"iostream"using namespace std;char map[][12]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};int maxx;char res[123],ans[123];struct trie{ int pl; trie *next[27]; char ch[123];};trie *root;void init(char *v,int m){ int i; char st[123]; trie *p=root,*q; for(i=0;v[i];i++) { int k=v[i]-'a'; if(p->next[k]==NULL) { q=(trie *)malloc(sizeof(trie)); q->pl=0; q->ch[0]='\0'; for(int j=0;j<26;j++) q->next[j]=NULL; p->next[k]=q; } p=p->next[k]; p->pl+=m; st[i]=v[i]; st[i+1]='\0'; strcpy(p->ch,st); //小技巧,存到当前节点的单词。 }}void dfs(trie *p,int x,int ed) // dfs遍历长度为ed的所有单词,找出最大的。{ if(x==ed) //满足长度 { if(p->pl>maxx) //寻找最大频率的单词。 { maxx=p->pl; strcpy(res,p->ch); } return; } int i=x+1,j; i=ans[i]-'0'; for(j=0;map[i][j];j++) //遍历当前数字所对应的字母 { int k=map[i][j]-'a'; if(p->next[k]!=NULL) dfs(p->next[k],x+1,ed); } return ;}void del(trie *p){ for(int i=0;i<26;i++) if(p->next[i]!=NULL) del(p->next[i]); free(p);}int main(){ int t,cas=1; cin>>t; while(t--) { int n; scanf("%d",&n); root=(trie *)malloc(sizeof(trie)); root->pl=0; for(int j=0;j<26;j++) root->next[j]=NULL; while(n--) { char v[123]; int m; scanf("%s%d",v,&m); init(v,m); } scanf("%d",&n); printf("Scenario #%d:\n",cas++); while(n--) { int i; scanf("%s",ans); for(i=0;ans[i+1];i++) { maxx=-1; dfs(root,-1,i); //若maxx为-1代表没有单词了 puts(maxx==-1?"MANUALLY":res); } puts(""); } puts(""); del(root); }}
0 0
- HDU-1298 | POJ-1451-T9
- poj 1451 || hdu 1298 T9
- [字典树] hdu 1298 poj 1451 T9
- POJ 1451 T9
- POJ - 1451 T9
- poj 1451 T9
- hdu 1298 T9
- HDU-1298-T9
- hdu 1298 T9
- hdu-1298-T9
- hdu 1298 T9
- hdu 1298 T9
- HDU 1298 T9
- hdu 1298 T9
- hdu 1298 T9 trie
- 【HDU】 1298 T9
- hdu 1298 T9
- [字典树]poj 1451 T9
- JDBC连接各种数据库方法
- 多线程之GCD
- 速度控制与转矩控制的区别
- 《你正常吗》华少舌战柳岩 断言黄海波被黑
- 印度候任总理莫迪夫人曝光:结婚45年只相处3月
- poj 1451 || hdu 1298 T9
- BroadCastReceiver 用法
- 数据的标准化
- 练手:例9-17
- 微信国际化三大缺点:商场开发战略不合理
- linux--硬盘大小--Linux系统下查看目录大小
- Java与XML联合编程之SAX篇
- Drawable、Bitmap、Canvas和Paint的区别
- WritePrivateProfileString等读写.ini配置文件