HDU1075 字典树 + 字符串映射
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1075 ,字典树的字符串映射。
题意是给你每个火星文单词对应的英语,然后让你把一篇火星文文章给翻译成英语。
解法:
在Trie树的每个结束标志处加一个字符串,这样就可以对每个火星文单词构造映射。构造映射后就可以处理翻译部分,可以用gets读入一行,然后对这一行进行处理,注意标点符号的情况。最后还有注意数组开大点。
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
#define LL __int64
const int maxn = + ;
const int sigma_size = ;
struct Trie {
int ch[maxn][sigma_size];
char str[maxn][];
bool isEnd[maxn];
int size;
void init() {
size = ;
memset(ch[] , , sizeof(ch[]));
memset(isEnd , , sizeof(isEnd));
}
int index(char c) { return c - 'a'; }
void insert(char *s , char *s0) {
int i , rt;
for(i = rt = ; s[i] != '\0' ; i++) {
int c = index(s[i]);
if(!ch[rt][c]) {
memset(ch[size] , , sizeof(ch[size]));
ch[rt][c] = size++;
}
rt = ch[rt][c];
}
strcpy(str[rt] , s0);
isEnd[rt] = ;
}
char *find(char *s) {
int i , rt;
for(i = rt = ; s[i] != '\0' ; i++) {
int c = index(s[i]);
if(!ch[rt][c])
return "";
rt = ch[rt][c];
}
return (isEnd[rt]) ? str[rt] : "";
}
} trie;
char s1[maxn] , s2[maxn];
int main()
{
trie.init();
while(~scanf("%s" , s1)) {
if(!strcmp(s1 , "START")) continue;
if(!strcmp(s1 , "END")) break;
scanf("%s" , s2);
trie.insert(s2 , s1);
}
getchar();
while(gets(s1)) {
if(!strcmp(s1 , "START")) continue;
if(!strcmp(s1 , "END")) break;
int i = ;
while(s1[i] != '\0') {
if(s1[i] >= 'a' && s1[i] <= 'z') {
int j = ;
while(s1[i] != '\0' && s1[i] >= 'a' && s1[i] <= 'z') {
s2[j++] = s1[i++];
}
s2[j] = '\0';
char *tmp = trie.find(s2);
if(tmp[] == '') printf("%s" , s2);
else printf("%s" , tmp);
} else {
putchar(s1[i++]);
}
}
puts("");
}
return ;
}
HDU1075 字典树 + 字符串映射的更多相关文章
- I: Carryon的字符串排序(字典树/map映射)
2297: Carryon的字符串 Time Limit: C/C++ 1 s Java/Python 3 s Memory Limit: 128 MB Accepted ...
- HDU1075 字典树板子题
题意 :给出两组字符串 一一映射,给出一种组成的文字,要求映射成另外一种思路:使用字典树,把映射的另外一个字符存在字典树的单词节点处 例如 abc 123 则把123存在abc节点中的c处即可 ...
- POJ 1002 487-3279(字典树/map映射)
487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 309257 Accepted: 5 ...
- Trie树|字典树(字符串排序)
有时,我们会碰到对字符串的排序,若采用一些经典的排序算法,则时间复杂度一般为O(n*lgn),但若采用Trie树,则时间复杂度仅为O(n). Trie树又名字典树,从字面意思即可理解,这种树的结构像英 ...
- 算法学习笔记(一)C++排序函数、映射技巧与字典树
1.头文件algorithm中有函数sort()用于排序,参数为:排序起始地址,排序结束地址,排序规则(返回bool型)例如,要将array[] = {5,7,1,2,9}升序排列,则使用: bool ...
- 字符串hash与字典树
title: 字符串hash与字典树 date: 2018-08-01 22:05:29 tags: acm 算法 字符串 概述 这篇主要是关于字符串里的 字符串hash 和 字符串字典树,,两个都是 ...
- 【字符串算法】字典树(Trie树)
什么是字典树 基本概念 字典树,又称为单词查找树或Tire树,是一种树形结构,它是一种哈希树的变种,用于存储字符串及其相关信息. 基本性质 1.根节点不包含字符,除根节点外的每一个子节点都包含一个字符 ...
- HDU 1671 Phone List (qsort字符串排序与strncmp的使用 /字典树)
Phone List Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 2017ACM暑期多校联合训练 - Team 6 1001 HDU 6096 String (字符串处理 字典树)
题目链接 Problem Description Bob has a dictionary with N words in it. Now there is a list of words in wh ...
随机推荐
- 未能写入输出文件 “c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6ee8fd15\5fc973dd\App_Web_default.aspx.cdcab7d2.e1voeq0d.dll”--“拒绝访问
在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Fil ...
- virtio使用
Windows 参考文档 下载virtio驱动 下载地址 如果是在Fedora或CentOS环境下,可使用yum的方式下载驱动 [root@centos centos]#wget https://fe ...
- CodeForces 125D【鸽巢原理】
哇塞?开始的三个数其中两个数一定能确定一个序列.(鸽巢原理) #include <bits/stdc++.h> using namespace std; typedef long long ...
- android 拖拽图片&拖动浮动按钮到处跑
来自老外: 拖拽图片效果 方法一: 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
- day14内置函数作业详解
day14题目 day14作业及默写 1,整理今天所学内容,整理知识点,整理博客. 2,画好流程图. 3,都完成的做一下作业(下面题都是用内置函数或者和匿名函数结合做出): 4,用map来处理字符串列 ...
- Exadata 上关于SAS盘的小秘密
案例概述 一个X3-2 的Exadata临时客户,ORACLE原厂工程师在进行onecommand初始化的过程中,执行到第6步,calibrate检测存储节点磁盘性能时报错,后续工作无法继续.而由于一 ...
- java动态线程池LinkedBlockingQueue和SynchronousQueue比较
import java.util.concurrent.Callable; public class MyCallable implements Callable<String> { pr ...
- jquery click嵌套 事件重复注册 多次执行的问题
jquery click嵌套 事件重复注册 多次执行的问题 上面只是参考,我自己的解决方法是先使用unbind("click")解除事件然后再绑定新事件: $("#tes ...
- RAID磁盘分区的创建
RAID(Reduntant Arrays of Independent Disks),即独立冗余磁盘阵列. RAID的级别: Raid 0: 条带 Raid 1: 镜像 Raid 2,3,4,5 等 ...
- 通过Maven管理多个MapReduce项目
1. 配置Maven环境 首先检查Windows是否配置了maven,进入cmd命令行,输入mvn -version命令,如果出现下图所示的 情形则表示满意配置maven. 从浏览器进入maven官网 ...