ZOJ 1109 Language of FatMouse 【Trie树】
<题目链接>
题目大意:
刚开始每行输入两个单词,第二个单词存入单词库,并且每行第二个单词映射着对应的第一个单词。然后每行输入一个单词,如果单词库中有相同的单词,则输出它对应的那个单词,否则输出“eh”。
解体分析:
本题是trie树的模板题,在建树的时候,在每个单词的结尾节点储存对应单词的序号即可。当然,本题用map也可做,但是效率不够高。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; const int MAXN = ;
const int N = ;
const int M = ; struct Node{
int index;
Node* child[M];
Node(){
index = -;
for(int i = ; i < M ; i++)
child[i] = NULL;
}
};
Node* root; int pos;
char word[MAXN][N]; void insert(int index , char* str){
Node* s = root;
int len = strlen(str);
for(int i = ; i < len ; i++){
int num = str[i]-'a';
if(s->child[num] == NULL)
s->child[num] = new Node();
s = s->child[num];
}
s->index = index; //该单词的结束节点记录所对应字符串的序号
} int search(char *str){
Node* s = root;
int len = strlen(str);
for(int i = ; i < len ; i++){
int num = str[i]-'a';
if(s->child[num] == NULL)
return -;
s = s->child[num];
}
return s->index;
} int main(){
pos = ;
root = new Node(); char str[N*];
char tmp[N];
int cnt = ; while(gets(str) && str[] != '\0'){
sscanf(str , "%s %s" , word[cnt] , tmp);
insert(cnt++ , tmp);
} while(scanf("%s" , tmp) != EOF){
int index = search(tmp);
if(index == -)
printf("eh\n");
else
printf("%s\n" , word[index]);
}
return ;
}
2018-10-29
ZOJ 1109 Language of FatMouse 【Trie树】的更多相关文章
- zoj 1109 Language of FatMouse(字典树)
Language of FatMouse Time Limit: 10 Seconds Memory Limit: 32768 KB We all know that FatMouse do ...
- zoj 1109 zoj 1109 Language of FatMouse(字典树)
好开心,手动自己按照字典树的思想用c写了一个优化后的trie字典树,就是用链表来代替26个大小的字符数组.完全按照自己按照自己的想法打的,没有参考如何被人的代码.调试了一天,居然最后错在一个小问题上, ...
- zoj 1109 Language of FatMouse(map映照容器的典型应用)
题目连接: acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1109 题目描述: We all know that FatMouse doe ...
- zoj 1109 Language of FatMouse(map)
Language of FatMouse Time Limit: 10 Seconds Memory Limit: 32768 KB We all know that FatMouse do ...
- ZOJ 1109 Language of FatMouse
较简单字典树,每输入一对字符串,前一个放在字典(数组)中,后一个插入字典树中,并将其最终的flag赋为前一个在数组中的下标,再就好找了.输入的处理方法要注意一下. 代码: #include <i ...
- zoj 1109 Language of FatMouse 解题报告
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=109 题目意思:给出一个mouse-english词典,问对于输入的m ...
- ZOJ Problem Set - 1109 Language of FatMouse
这道题目最让人头疼的就是该题的input怎么结束,因为它要求输入一个空行的时候则一串字符串输入结束,这就不得不让人绕个弯来解决这个问题. (注:本人习惯于使用C中的字符串操作,但是用到map要求使用s ...
- zoj1109 水题(大神绕道) Language of FatMouse
Language of FatMouse Time Limit: 10 Seconds Memory Limit:32768 KB We all know that FatMouse doe ...
- 数据结构~trie树(字典树)
1.概述 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树. 我理解字典树是看了这位大佬博客.还不了解字典树的 ...
随机推荐
- Java对象之间的深度复制拷贝
/* * Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...
- 尚硅谷《全套Java、Android、HTML5前端视频》
尚硅谷<全套Java.Android.HTML5前端视频> (百万谷粉推荐:史上最牛.最适合自学的全套视频.资料及源码) [尚硅谷官网资料导航] 谷粒学院在线学习:http://www.g ...
- android 使用opencv
1.将已有的项目名称改名字,但一直报错 Error:A problem occurred configuring project ':app'.> executing external nati ...
- js获取url参数值,并解决中文乱码
<script type="text/javascript"> function GetQueryString(name) { var reg = new RegExp ...
- JSP Filters(过滤器)
Filter是拦截Request请求的对象:在用户的请求访 问资源前处理ServletRequest以及ServletResponse,它可 用于日志记录.加解密.Session检查.图像文件保护 等 ...
- The import util cannot be resolved
代码: 明显的错误: 应改成 import java.util.*; 没有理解java的基本概念
- java概念基础笔记整理
1.构造方法没有类型,有类型的不是不叫构造方法. 2.一个类的的成员变量可以是java允许的任何数据类型,一个类可以把某个对象作为自己的一个成员变量,如果用这样的类创建对象,那么该对象中就会其他对象, ...
- js变量前的+是什么意思
js变量前的+是什么意思 if (+value >= distance) {} 这个+什么意思 可以理解为 Number(value) 会将其按照Number函数的规则转换为数值或者NaN, ...
- Java接口自动化测试之集成MyBatis和MySQL (五)
pom.xml新增dependency <dependency> <groupId>org.mybatis</groupId> <artifactId> ...
- Visual Studio上编译ncnn
prerequisite 是为了在PC上熟悉ncnn的基本代码,所以用Visual Studio来配置的. 期间用过VS2013(update5)/VS2015/VS2017,反正都是基于CMake生 ...