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 ...
随机推荐
- 剑指 Offer 题目汇总索引
剑指 Offer 总目录:(共50道大题) 1. 赋值运算符函数(或应说复制拷贝函数问题) 2. 实现 Singleton 模式 (C#) 3.二维数组中的查找 4.替换空格 ...
- super语句
1.super是对当前对象的父类对象的默认引用, 2.super必须出现在子类中(方法或构造函数),而不是其他位置 3.super无法访问private成员属性和方法
- 初级Bug率,随时受不了
一听到初级Bug这个名字,很多开发工程师都会觉得很头痛,还有那个“初级Bug率”,让人随时受不了. 初级Bug这个概念,在多数缺陷跟踪工具中,是不存在的,可以说是淘宝研发部的特色.初级Bug对应Bug ...
- delphi.指针.应用
注:初稿...有点乱,可能增删改... 因为指针应用,感觉不好写,请大家指出错误,谢谢. 注意: 本文着重点讲的是指针的各类型的应用或使用,而不是说这种方法不应该+不安全+危险+不提倡使用. 其它:本 ...
- 64位电脑上配置mysql-connector-odbc的方法
在系统盘搜索odbcad32,选择在C:\Windows\SysWOW64内的文件
- php-建造者模式(Builder)解析
其与抽象模式相类似,都可以创建复杂的对象,但是抽象工厂更注重多个系列的产品对象,而Builder模式则着重于一步一步的构建一个复杂的对象,在最后一步才返回产品, 使用建造者模式的好处是: 1.将构造代 ...
- Linux内核模块设计
内核的设计有两种方式:单内核和微内核,两者各有优劣,关于两者的比较可以参见wiki.windowds和Solaris采用微内核结构. Linux内核采用单内核结构,设计比较简单,但单内核的理念是把所有 ...
- Jmeter组件8. BeanShell Sampler
BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样 ...
- Java反射机制DOME
Java反射机制 public class TestHibernate { @Test public void TestHb(){ try { Class cs = Class.forName(&qu ...
- hibernate复合主键
需要用到实体类Role的主键和Menu的主键结合起来作为实体类RoleMenu的主键,那么通过Hibernate具体实现如下: RoleMenu实体类:(注意该实体类需要实现Serializable接 ...