hdu1075Phone List(字典树)
来源:互联网 发布:日本围棋软件 编辑:程序博客网 时间:2024/05/29 17:29
1.题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1075
2.题意:根据所提供的“字典”,解破火星文。
3.参考代码一:
#include <stdio.h>#include <string.h>#include <ctype.h>char s1[3000],s2[3000];struct node{char s[14];node* next[26];bool flag; ///标记是否在字典树里node(){memset(s,0,sizeof(s));memset(next,0,sizeof(next));flag=0;}};node* root=NULL;void build(node* t,int id){ ///建立if(!t->next[s2[id]-'a'])t->next[s2[id]-'a']=new node;if(s2[id+1])build(t->next[s2[id]-'a'],id+1);else ///若找到则替换{strcpy(t->next[s2[id]-'a']->s,s1);t->next[s2[id]-'a']->flag=1;}} int find(node* t,int id){ ///查找if(!t->next[s2[id]-'a'])return 0;if(s2[id+1]=='\0'){if(t->next[s2[id]-'a']->flag){printf("%s",t->next[s2[id]-'a']);return 1;}return 0;}return find(t->next[s2[id]-'a'],id+1);}int main(){root=new node;int i,j;scanf("START%*c");while(scanf("%s%*c",s1) && strcmp(s1,"END")){scanf("%s%*c",s2);build(root,0);}scanf("START%*c");while(gets(s1) && strcmp(s1,"END")) ///句子记得用gets()接收{for(i=0;s1[i];i++){if(!islower(s1[i])) ///若不是小写字母putchar(s1[i]); ///则直接输出else{j=0;while(islower(s1[i]))s2[j++]=s1[i++];s2[j]='\0'; ///别忘了赋'\0'i--; ///防止读取非法内存(eg.假如说s1的长度是10,s[0]~s[9]存的是字符,s[10]是'\0',如果不i--下一层循环就会出错,所以要可特别注意!!!)if(!find(root,0)) ///找不到则原样输出printf("%s",s2);j=0;}}printf("\n");}return 0;}
参考代码二:
#include <iostream>#include <string>#include <map>using namespace std;map<string,string>M;int main(){string a,b;cin>>a;while(cin>>a && a!="END"){cin>>b;M[b]=a;}cin>>a;getchar();char tmp[5000];while(1){gets(tmp);if(!strcmp(tmp,"END"))break;int i,len=strlen(tmp);b="";for(i=0;i<len;i++){if(!(tmp[i]>='a' && tmp[i]<='z')){if(M[b]!="")cout<<M[b];elsecout<<b;b="";cout<<tmp[i];}elseb+=tmp[i];}cout<<endl;}return 0;}
- hdu1075Phone List(字典树)
- HDU_1671_Phone List(字典树)
- poj 3630 Phone List (字典树 +静态字典树)
- Phone List(字典树,销毁树)
- POJ 3630 Phone List(字典树)
- hdu Phone List (字典树)
- 【hdu】Phone List (字典树)
- hdu 1671 Phone List(字典树)
- Phone List(字典树 or 排序)
- Phone List(字典树,数据结构)
- HDU-#1671 Phone List(字典树)
- Phone List题解(字典树)
- HDOJ 1671 Phone List(字典树)
- HDU1671 Phone List(字典树)
- hdu 1671 phone list(字典树)
- HDU 1671 Phone List(字典树)
- HDU 1671 Phone List(字典树)
- HDU 1671 Phone List(字典树)
- BigDecimal比较大小
- mysql order 隨記
- OK6410 Linux下LED驱动程序
- RPG 游戏主角与地图移动关系封装类
- [linux 内核]kmalloc/kfree,vmalloc/vfree函数用法和区别
- hdu1075Phone List(字典树)
- 第八周项目三----分数类中的运算符重载
- ListView学习实例二
- 使用jmap做java进程dump
- JQuery Mobile入门
- 往ORACLE数据库表里装载数据
- 《移情与投射》读书笔记
- Android 学习 笔记_03. SQLite的使用
- BMP文件结构