HDU 1057 What Are You Talking About trie树 简单
2024-09-21 16:41:42
http://acm.hdu.edu.cn/showproblem.php?pid=1075
题意 : 给一个单词表然后给一些单词,要求翻译单词表中有的单词,没有则直接输出原单词.
翻译文段部分getchar()输入即可,需要仔细一点,但是很简单不恶心
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
const int maxn=;
const double eps=1e-;
const long long modn=;
struct tri{
bool exist;
int next[];
char ch[];
}e[maxn*];
int tot=;
char a[]={},b[]={},cc;
char st[]={'S','T','A','R','T'};
char ed[]={'E','N','D'};
void doit(int x,int k,int j){
if(k<j){
e[x].exist=;
strcpy(e[x].ch,b);
return;
}
int z=a[j]-'a';
if(e[x].next[z]){
doit(e[x].next[z],k,j+);
}else{
e[x].next[z]=++tot;
doit(tot,k,j+);
}
}
bool getit(int x,int k,int j){
if(k<j){
if(e[x].exist){
printf("%s",&e[x].ch);
return ;
}
return ;
}
int z=a[j]-'a';
if(e[x].next[z]){
return getit(e[x].next[z],k,j+);
}else{
return ;
}
}
int main(){
while(scanf("%s",&b)){
if(strcmp(b,st)==){
continue;
}if(strcmp(b,ed)==){
break;
}
scanf("%s",&a);
doit(,strlen(a)-,);
}
scanf("%s",&b);
a[]=getchar();
a[]=getchar();
int i=;
while(a[]!='E'){
while(a[i]<='z'&&a[i]>='a'){
i++;
a[i]=getchar();
}
cc=a[i];
a[i]=;
if(i>){
if(!getit(,i-,)){
for(int j=;j<i;j++){
printf("%c",a[j]);
}
}
}
printf("%c",cc);
i=;
a[]=getchar();
}
return ;
}
最新文章
- 认识AMD、CMD、UMD、CommonJS
- 【记录】GitHub/TortoiseGit 修改邮箱/提交者
- Java的二维数组的应用及杨辉三角的编写
- redis五种数据类型的使用(zz)
- 从零开始学Python04作业思路:模拟ATM电子银行
- C# winform应用程序仅能打开一个进程运行
- python 操作exls学习之路1-openpyxl库学习
- cell跳出动画
- Angular系列----AngularJS入门教程01:AngularJS模板 (转载)
- Linux 4.6分支已到生命尽头 请尽快升级至Linux 4.7.1
- BZOJ 1452 [JSOI2009] Count
- java对象的序列化与反序列化使用
- IT技术方案最佳实践方案的收集
- iOS 调试心得
- stun/turn/ice学习笔记
- JQuery 选择某个td中第二个a标签 控制特殊样式
- Thymeleaf的一些操作
- Lodop窗口的按钮、权限,隐藏或设置功能不可用
- Java 取得文件名的后缀
- [转]Maven介绍,包括作用、核心概念、用法、常用命令、扩展及配置