HDU 1075 What Are You Talking About(字典树模板题)
2015-08-14 10:23
579 查看
题目链接
思路:这是字典树水题,只要对插入字典书中的单词标号,然后再根据标号的单词去找相对应的单词就好..............最需要注意的是,hello插入字典树后,如果查找hell应该是返回0的。这里需要对单词末尾进行标记................
AC代码如下:
问题:输入一段英文,对照给的单词的映射,输出映射后的字符串
思路:这是字典树水题,只要对插入字典书中的单词标号,然后再根据标号的单词去找相对应的单词就好..............最需要注意的是,hello插入字典树后,如果查找hell应该是返回0的。这里需要对单词末尾进行标记................
AC代码如下:
#include<cstdio> #include<cstring> #include<iostream> using namespace std; struct node { bool flag; string s; node *next[26]; node() { flag=0; memset(next,0,sizeof(next)); } }; node *p,*root; void Insert(string s,string v) { p=root; for(int i=0;i<s.size();i++) { int id=s[i]-'a'; if(p->next[id]==NULL) p->next[id]=new node(); p=p->next[id]; } p->flag=1; p->s=v; } string Query(string s) { p=root; for(int i=0;i<s.size();i++) { int id=s[i]-'a'; if(p->next[id]==NULL) return ""; p=p->next[id]; } if(p->flag==0) return ""; return p->s; } int main() { root=new node(); string s,v; cin>>s; while(cin>>s&&s!="END") { cin>>v; Insert(v,s); } cin>>s; getline(cin,s); while(getline(cin,s)&&s!="END") { for(int i=0;i<s.size();i++) { v=""; while(s[i]>='a'&&s[i]<='z') v+=s[i++]; string f=Query(v); if(f=="") cout<<v<<s[i]; else cout<<f<<s[i]; } cout<<endl; } return 0; }
相关文章推荐
- POJ1006: 中国剩余定理的完美演绎(转)
- .net 命名管道(NamedPipe) 的使用
- android开发(12) 使用无线网络和切换到GPRS连接
- arcgis for android 学习 - (1) 安装环境简述
- arcgis for android 学习 - (2) hello Wrold. 显示一个地图
- arcgis for android 学习 - (3) 图层的可见性
- arcgis for android 学习 - (4) 了解mapView的一些方法和事件
- cookie 和session
- 学习vi和vim编辑(3):一个简单的文本编辑器(2)
- VB中需要注意的地方
- 【转】C语言mem.h中的函数介绍
- 数学(1.费马定理 2.扩展欧几里德算法 3.莫比乌斯反演)
- codeforces 232D Fence
- 收藏站点列表
- 【Game】protobuf:windows下环境配置
- SDN和NFV的基础,Intel如何思考
- [网络流24题] 04 魔术球问题 (有向无环图最小路径覆盖, 最大流)
- android开发(8) 选项卡的切换
- android开发(9) 渐变动画演示(Tween Animation)
- android开发(10) 逐帧动画演示(Frame Animation)