HDU1075
题目大意:
给你一本火星词典,每个火星单词对应一个英文单词。
然后给你一篇火星文章,要求你翻译成英文。
要求如下:
如果这个火星单词用英文单词可以表示,就翻译成英文,如果没有这个单词,就原样输出。遇到标点符号或者空格原样输出即可。
____________________________________________________________________________________________
把给的每一个火星词建立trie,并在每个trie节点中建立一个字符串s,用来存储对应的英语单词,当然还要有exist存储是否构成单词。剩余的就是字符串的处理了!
____________________________________________________________________________________________
//hdu 1075
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm> using namespace std;
struct tn
{
tn * next[];
bool exist;
char s[];
}*root;
tn * create()
{
tn * tp=new(tn);
tp->exist=;
memset(tp->next,,sizeof(tp->next));
tp->s[]='\0';
return tp;
}
void insert(char *ss,char *s)
{
tn * p=root;
char *q=ss;
while(*q)
{
int id=*q-'a';
if(p->next[id]==NULL)p->next[id]=create();
p=p->next[id];
q++;
}
p->exist=;
strcpy(p->s,s);
}
char * search(char *ss)
{
tn *p=root;
char *q=ss;
while(*q)
{
int id=*q-'a';
p=p->next[id];
q++;
if(p==NULL)return NULL;
}
if(p->exist)return p->s;
else return NULL;
}
char s[],ss[],sss[];
int main()
{
root=create();
scanf("%s",s);
while(scanf("%s",s) && strcmp(s,"END")!=)
{
scanf("%s",ss);
insert(ss,s);
}
while(gets(ss) && strcmp(ss,"START")!=);
int js;
while(gets(ss) && strcmp(ss,"END")!=)
{
js=;
for(int i=;ss[i]!=;++i)
if(ss[i]>='a' && ss[i]<='z')sss[js++]=ss[i];
else
{
sss[js]='\0';
char *tmp=search(sss);
if(tmp==NULL)printf("%s",sss);
else printf("%s",tmp);
printf("%c", ss[i]);
js=;
}
printf("\n");
}
return ;
}
HDU1075的更多相关文章
- HDU1075 - What Are You Talking About(Trie树)
题目大意 给定一些火星文单词以及对应的英语单词,然后给你一些火星文,要求你翻译成对应的英文 题解 第一次写Trie树! 把所有火星文单词插入到Trie树中,并且每个火星文单词结尾的节点记录相应英文单词 ...
- HDU1075 字典树板子题
题意 :给出两组字符串 一一映射,给出一种组成的文字,要求映射成另外一种思路:使用字典树,把映射的另外一个字符存在字典树的单词节点处 例如 abc 123 则把123存在abc节点中的c处即可 ...
- (map)What Are You Talking About hdu1075
What Are You Talking About Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K ...
- What Are You Talking About HDU1075
一开始我也想用map 但是处理不好其他字符.. 看了题解 多多学习! 很巧妙 就是粗暴的一个字符一个字符的来 分为小写字母和非小写字母两个部分 一但单词结束的时候就开始判断. #includ ...
- HDU1075 字典树 + 字符串映射
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1075 ,字典树的字符串映射. 题意是给你每个火星文单词对应的英语,然后让你把一篇火星文文章给翻译成英语 ...
- HDU1075 What Are You Talking About(map)
传送门 题目大意:一个单词对应另一个单词 翻译一段文字 题解:stl map走一波 代码: #include<iostream> #include<map> #include& ...
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- Trie树入门及训练
什么叫Trie树? Trie树即字典树. 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本 ...
- OJ题目分类
POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 P ...
随机推荐
- java中interface的详解
JAVA的核心概念:接口(interface) 接口与类属于同一层次,实际上,接口是一种特殊的抽象类. 如: interface IA{ } public interface: 公开接口 与 ...
- nginx入门
1. 前言 Nginx是当前最流行的HTTP Server之一,根据W3Techs的统计,目前世界排名(根据Alexa)前100万的网站中,Nginx的占有率为6.8%.与Apache相比,Ngi ...
- 对restful的理解
最近在学习web api,从而涉及到了restful风格,我的理解是restful风格,每个链接都会对资源进行相应的操作(CRUD),如果一个链接不包含资源,则可能不符合restful风格,借此想请教 ...
- QTP操作word文档
QTP可以对word文档进行操作,这里最主要展示的是向word文档写入内容,并保存的功能. Option explicit Dim wordApp Set wordApp = createobject ...
- Echart图表入门
1.Echart是什么? Enterprise Charts的缩写,商业级数据图表,一个纯Javascript的图表库.更多的内容可以参考网上的资料 2.使用步骤 a.下载开发包 官网地址:http: ...
- 微信连wifi
微信连wifi 首先需要到微公众平台添加微信连wifi功能插件
- MongoDB学习笔记(入门)
一.文档的注意事项:1. 键值对是有序的,如:{ "name" : "stephen", "genda" : "male&quo ...
- PAT 02-线性结构2 一元多项式的乘法与加法运算 (20分)
设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以空格分隔. ...
- ReadReadMe
∮博客说明 §标题格式说明(只在这篇文档中说明一次) 此站博客分两类 普通博客,补丁博客 普通博客标题格式为 NumberType_Title Number: 博客编号 ,按时间编号,编号只在 ...
- Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697
详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...