POJ1451 T9 题解&代码
来源:互联网 发布:kik是什么软件 编辑:程序博客网 时间:2024/04/26 11:10
第一次写Trie树我居然1A了【不,不要算某个PE
Trie树模板级别的题【哪里模板了
对于每组数据的dictionary建立一个字典树,然后dfs查询,用数组保存离线的一个询问里的length-1个输出
#include<iostream>#include<stdio.h>#include<string.h>#define clr(x) memset(x,0,sizeof(x))using namespace std;const int maxl=105;const int maxn=1005;int T,n,m,value,tot,Flag[maxl],son[maxl*maxn][27],val[maxl*maxn][27],check[10][4]={{0,0,0,0},{0,0,0,0},{0,1,2,26},{3,4,5,26},{6,7,8,26},{9,10,11,26},{12,13,14,26},{15,16,17,18},{19,20,21,26},{22,23,24,25}};char s[maxl],ans[maxl][maxl],t[maxl],fal[]="MANUALLY";void newnode(int x,int temp,int v){ //cout<<tot<<' '<<val[x][temp]<<' '<<v<<endl; if(v)son[x][temp]=++tot; else son[x][temp]=0; val[x][temp]=v; for(int i=0;i<26;i++) son[tot][i]=0,val[tot][i]=0;}void Insert(int v){ int len=strlen(s),p=0,x=0,temp; while(p!=len) { temp=s[p]-'a'; //cout<<temp<<' '<<son[x][temp]<<endl; if(son[x][temp])val[x][temp]+=v; else newnode(x,temp,v); x=son[x][temp]; p++; }}void query(int p,int now){ if(p==strlen(s)-1)return; for(int i=0;i<4;i++) if(son[now][check[s[p]-'0'][i]]) { t[p]=check[s[p]-'0'][i]+'a'; t[p+1]='\0'; if((!Flag[p]) || val[now][check[s[p]-'0'][i]]>Flag[p]) { Flag[p]=val[now][check[s[p]-'0'][i]],strcpy(ans[p],t); //printf("%d %d %s\n",p,val[now][check[s[p]-'0'][i]],ans[p]); } query(p+1,son[now][check[s[p]-'0'][i]]); }}int main(void){ scanf("%d",&T); for(int i=1;i<=T;i++) { printf("Scenario #%d:\n",i); tot=0; newnode(0,0,0); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%s%d",s,&value); Insert(value); } scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%s",s); clr(Flag); query(0,0); int len=strlen(s); for(int i=0;i<len-1;i++) if(Flag[i])printf("%s\n",ans[i]); else printf("%s\n",fal); printf("\n"); } printf("\n"); } return 0;}
1 0
- POJ1451 T9 题解&代码
- 【字典树】poj1451 T9
- poj1451~T9~字典树
- POJ1451 T9【Trie】
- 【POJ 1451】T9 中文题意&题解&代码(c++)
- T9输入法相关代码
- t9
- T9
- 一个简单T9输入法的实现(有代码)
- 一个简单T9输入法的实现(有代码)
- POJ1451 - 字典树的变型
- T9输入法
- T9输入法
- hdu1298 T9
- S - T9
- T9算法
- T9 Spelling
- t9 输入法
- C# Http 发送Post请求实例
- I. Lottery
- 一篇很全面的freemarker教程
- Ubuntu如何选择更新源
- spring监听与IBM MQ JMS整合
- POJ1451 T9 题解&代码
- Vijos P1431 守望者的逃离 (动态规划+贪心)(未解决)
- Windows 测试txt或者java文件传递到Mac上出现乱码
- hdu2030
- springmvc整合mybatis框架源码 bootstrap html5
- std::list<>
- EasyUI DataGrid的loadFilter属性使用
- Android studio添加依赖库
- 将MyEclipse的配色方案还原到最初的状态(主题还原)