[字典树]poj 1451 T9
2012-08-08 14:11
441 查看
/** [字典树]poj 1451 T9 在hdu 1298 上WA了。 */ #include <stdio.h> #include <string.h> #define N 50000 struct tireTree { int cnt; tireTree *child[26]; }tt ,*spt; void insert(char *s,int p,tireTree *&rt) { tireTree *loc; loc = rt; int num; for(int i = 0; s[i]; ++i) { num = s[i] - 'a'; if(loc->child[num] == NULL) loc->child[num] = spt++; loc = loc->child[num]; loc->cnt += p; } } char t9[10][6] = {",",",","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; char wr[11],word[13][13]; char s[11]; int pp[11]; void query(tireTree *rt,int t) { if(t > 0) { if(rt->cnt > pp[t-1]) { pp[t-1] = rt->cnt; for(int i = 0; i < t; ++i) word[t-1][i] = wr[i]; } } if(s[t] == '1') return ; int i = s[t] - '0',j,num; for(j = 0; t9[i][j]; ++j) { num = t9[i][j] - 'a'; if(rt->child[num]) { wr[t] = t9[i][j]; query(rt->child[num],t+1); } } } int main() { int t,n,i,p,cas = 0; // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); scanf("%d",&t); while(t--) { memset(tt,0,sizeof(tt)); spt = tt; tireTree *rt; rt = spt++; scanf("%d",&n); while(n--) { scanf("%s %d",s,&p); insert(s,p,rt); } printf("Scenario #%d:\n",++cas); scanf("%d",&n); while(n--) { scanf("%s",s); memset(pp,0,sizeof(pp)); query(rt,0); for(i = 0; s[i] != '1'; ++i) { if(pp[i] == 0) printf("MANUALLY\n"); else { for(int j = 0; j <= i; ++j) printf("%c",word[i][j]); puts(""); } } puts(""); } puts(""); } return 0; }
相关文章推荐
- 【字典树】poj1451 T9
- POJ 1451 T9 字典树+优先队列
- poj 1451 T9 【字典树 + DFS 模拟智能英语输入法】
- 【POJ】1451 - T9(动态字典树 & dfs & STL)
- [字典树] hdu 1298 poj 1451 T9
- poj 1451 T9 字典树
- POJ 1451 T9 (字典树好题)
- POJ 1451 T9 (字典树好题)
- POJ 1451 T9(字典树+bfs)
- POJ 1451 T9【字典树】
- (HDU)1298 (POJ)1451 - T9 【字典树】+【DFS】
- T9 (HDU_1298,POJ_1451) 字典树 + DFS
- (字典树应用) poj 1451 T9
- 【poj 1451】T9 (字典树+深搜)
- 【POJ】1451 T9
- POJ1451 T9 题解&代码
- 【POJ 1451】T9 中文题意&题解&代码(c++)
- HDU-1298 | POJ-1451-T9
- POJ 1451 字典树
- POJ 1451 T9 已被翻译