• ZOJ 1109 Language of FatMouse


    最近学的线段树和扫描线实在是有点难度,所以我干脆拿出点时间写篇自己之前做的题目报告吧!

                                                         Language of FatMouse

    Time Limit:10000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu

    Description

    We all know that FatMouse doesn't speak English. But now he has to be prepared since our nation will join WTO soon. Thanks to Turing we have computers to help him.

    Input Specification

    Input consists of up to 100,005 dictionary entries, followed by a blank line, followed by a message of up to 100,005 words. Each dictionary entry is a line containing an English word, followed by a space and a FatMouse word. No FatMouse word appears more than once in the dictionary. The message is a sequence of words in the language of FatMouse, one word on each line. Each word in the input is a sequence of at most 10 lowercase letters.

    Output Specification

    Output is the message translated to English, one word per line. FatMouse words not in the dictionary should be translated as "eh".

    Sample Input

    dog ogday
    cat atcay
    pig igpay
    froot ootfray
    loops oopslay
    
    atcay
    ittenkay
    oopslay
    

    Output for Sample Input

    cat
    eh
    loops

    算法分析:
    学过算法的话,能看出来这道题应该用字典树做,我个人觉得除非功底非常强,否则单枪匹马
    敲出针对题目的字典树来其实还真不容易。由于最近学习了STL,所以我选择用STL来做,这样代
    码比较简洁,也容易看懂。我个人觉得,你只要把题意弄懂,清楚针对题目的算法,用STL来描述
    算法还是比较容易、方便、快捷的!
    本题的题意是:每行输入两个单词a, b; a是正常单词,b是胖老鼠语言(兽语吧)!
    然后有多组询问:每组给你兽语,让你输出对应这个兽语的正常单词。
    我选择用STL的map来做,开始时我以为map可以这样定义:map<string, string>,我第一
    次的代码是这么写的但编译不过去。于是赶紧查资料发现好多模板里的map定义都包含int,没有我
    刚才的那种定义。我这是突然想起来,记得在描述map时,说它是:键——值的类型。所以那个值好像
    就是int类型的。
    所以这道题,我定义map<string, int>类型,再额外开辟一个 char s[][]; 用来存储正常
    语言 。就像这样:
    读入s1,s2;
    e=1;
    map[s2]=e++; // map的值是存到二维数组里的下标
    strcpy(s[e-1], s1 );
    询问时,读入s3,if(map[s3>0]), 直接输出map[s3]
    否则,,,,,,,,
    Accepted的代码:
    #include <stdio.h>
    #include <string.h>
    #include <string>
    #include <map>
    #include <algorithm>
    
    using namespace std;
    
    char s1[20], s2[20], s3[20];
    
    char s[100007][15];
    
    
    int main()
    {
    	map<string, int>ma;
    	map<string, int>::iterator it;
        int e=1;
    	
        while(scanf("%c", &s1[0]) && s1[0]!='
    ' )
    	{
    		scanf("%s %s%*c", s1+1, s2 );
    
    		ma[s2]=e++ ;
    		strcpy(s[e-1], s1);
    
    	}
        int flag;
        while(scanf("%s", s3)!=EOF)
    	{
    
    	    if(ma[s3]>=1)
    		{
    			printf("%s
    ", s[ma[s3]] );
    		}
    		if(ma[s3]==0)
    		{
    			printf("eh
    ");
    		}
    	} 
    	
    	return 0;
    }
    


  • 相关阅读:
    Python 操作 MySQL 之 pysql 与 SQLAchemy
    Python 列表元素里面含有字典或者列表进行排序
    Windows PyCharm QtDesigner/pyuic5配置
    Python之科学运算Pandas模块
    Linux 主要目录速查表
    php读取文件大小
    上传视频云点播和查看视频
    wordppt转pdf
    微信登录
    微信公众号
  • 原文地址:https://www.cnblogs.com/yspworld/p/3906486.html
Copyright © 2020-2023  润新知