hdu 1298 T9 字典树+DFS
来源:互联网 发布:sequoiadb巨杉数据库 编辑:程序博客网 时间:2024/06/05 09:04
开始我算法复杂度估计错误,纠结了很久,没想到直接深搜穷举。
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1298
#include <stdio.h>#include <stdlib.h>#include <string.h>#define maxn 30struct Trie{ Trie * next[maxn]; int v;};Trie * root;int phone[8][4]={{0,1,2},{3,4,5},{6,7,8},{9,10,11},{12,13,14},{15,16,17,18},{19,20,21},{22,23,24,25}};int re[8]={3,3,3,3,3,4,3,4};char en[105];char ans[105];int pp;void Init_Trie(){ root = (Trie *)malloc(sizeof(Trie)); for(int i=0;i<maxn;i++){ root -> next[i] = NULL; }}void Add_Trie(int value,char * str){ Trie * p = root , * q; for(int i=0;str[i]!='\0';i++){ int id = str[i] - 'a'; if(p->next[id]==NULL){ q = (Trie *)malloc(sizeof(Trie)); q -> v = value; for(int j=0;j<maxn;j++){ q -> next[j] = NULL; } p -> next[id] = q; p = p -> next[id]; } else { p = p -> next[id]; p->v +=value; } }}void dfs(Trie * p,char * a,int now,int len){ if(now==len) { if(pp<p->v) { pp=p->v; for(int i=0;i<len;++i) en[i]=ans[i]; en[len]=0; } return; } int t=a[now]-'2'; for(int i=0;i<re[t];i++) { int id=phone[t][i]; if(p->next[id]!=NULL) { ans[now]='a'+id; dfs(p->next[id],a,now+1,len); } } return;}void Del_Trie(Trie * p){ for(int i=0;i<maxn;i++){ if(p->next[i])Del_Trie(p->next[i]); } free(p);}void input(){ int T,t=1; scanf("%d",&T); while(T--){ printf("Scenario #%d:\n",t++); Init_Trie(); int n; scanf("%d",&n); char a[105]; int value; for(int i=0;i<n;i++){ scanf("%s %d",a,&value); Add_Trie(value,a); } int m; scanf("%d",&m); for(int i=0;i<m;i++){ scanf("%s",a); for(int j=1;j<strlen(a);j++){ pp = 0; dfs(root,a,0,j); if(pp){ puts(en); } else puts("MANUALLY"); } if(i<m-1){ puts(""); } } puts(""); puts(""); Del_Trie(root); }}void File(){ freopen("a.in","r",stdin); freopen("a.out","w",stdout);}int main(){ //File(); input(); return 0;}
0 0
- HDU 1298 T9 字典树+dfs
- 【字典树+DFS】hdu 1298 T9
- 字典树+DFS T9 HDU 1298
- hdu 1298 T9 字典树 dfs
- hdu 1298 T9(字典树+DFS)
- HDU 1298 T9 字典树+DFS
- [字典树 + dfs] HDU 1298 - T9
- hdu 1298 T9 字典树+DFS
- HDU 1298 T9 // 字典树,枚举,dfs
- HDU 1298:T9【字典树+dfs】
- hdu-1298 T9(字典树+DFS)
- HDU 1298 T9 字典树+dfs
- HDU 1298 T9(手机输入法相关,字典树+dfs)
- hdu 1298 字典树 + DFS (模拟T9文本输入)
- hud 1298 T9(字典树 + DFS详解)
- 【字典树+DFS】 hdu1298 T9
- HDU1298 T9 字典树+DFS
- [字典树] hdu 1298 poj 1451 T9
- java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.FilterDispatcher
- POJ_3368_Frequent values_线段树/ST稀疏表
- CreateRemoteThread
- 读json文件
- Android 网络管理
- hdu 1298 T9 字典树+DFS
- jQuery与javascript方法比较
- python之一些细节
- 编写高质量IOS代码(二)
- 登录加密测验
- zendstudio新建phplocal工程,配置apache服务器
- leetcode 206 Reverse Linked List
- spring获取request,session
- DLL_THREAD_ATTACH防止远程线程注入