zoukankan      html  css  js  c++  java
  • Babelfish 分类: 哈希 2015-08-04 09:25 2人阅读 评论(0) 收藏

    Babelfish
    Time Limit: 3000MS Memory Limit: 65536K
    Total Submissions: 36398 Accepted: 15554

    Description
    You have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of a foreign language. Fortunately, you have a dictionary to help you understand them.

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

    Output
    Output is the message translated to English, one word per line. Foreign 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

    Sample Output

    cat
    eh
    loops

    Hint
    Huge input and output,scanf and printf are recommended.
    一道哈希的题,用字典树过的,不过在输入数据的过程中却卡住了,后来在搜题解知道用sscanf()处理的,见识少啊.

    #include <map>
    #include <list>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <string>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <iostream>
    #include <algorithm>
    #define LL long long
    #define eps 1e-9
    #define PI acos(-1.0)
    #define INF 0x3f3f3f3f
    #define CRR fclose(stdin)
    #define CWW fclose(stdout)
    #define WW freopen("output.txt","w",stdout)
    #define RR freopen("input.txt","r",stdin)
    
    using namespace std;
    
    const int MAX = 100010;
    
    char s[MAX][15],c[15];
    
    struct node
    {
        int  flag;
        node *next[26];
    }*head;
    int top;
    node * Creat()
    {
        node *p;
        p=new node;
        p->flag=0;
        for(int i=0;i<26;i++)
        {
            p->next[i]=NULL;
        }
        return p;
    }
    void Build_Tree()
    {
        node *p=head;
        int a,len=strlen(c);
        for(int i=0;i<len;i++)
        {
            a=c[i]-'a';
            if(!p->next[a])
            {
                p->next[a]=Creat();
            }
            p=p->next[a];
        }
        p->flag=top;//将对应单词的编号赋给它,便于查找
    }
    int Look()
    {
        node *p=head;
        int a,len=strlen(c);
        for(int i=0;i<len;i++)
        {
            a=c[i]-'a';
            if(!p->next[a])
            {
                return 0;
            }
            p=p->next[a];
        }
        if(!p->flag)//查找不到返回零
        {
            return 0;
        }
        else
        {
            return p->flag;
        }
    }
    int main()
    {
        head=Creat();
        top=1;
        int t;
        char cc[30];
        while(gets(cc)&&cc[0]!='')
        {
    
            sscanf(cc,"%s %s",s[top],c);
            Build_Tree();
            top++;
    
        }
        while(~scanf("%s",c))
        {
            t=Look();
            if(t)
            {
                printf("%s
    ",s[t]);
            }
            else
            {
                printf("eh
    ");
            }
        }
        return 0;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Python OpenCV 常用操作
    Conda Cheatsheet | 速查表
    Loadrunner解决启动浏览器后页面显示空白
    26个ASP.NET常用性能优化方法
    C# Foreach用法
    体验ASP.NET MVC3 表单令牌功能!
    基于.Net(C#开发)平台的三层框架架构软件的设计与实现
    去掉浏览器中a标签的虚线
    Microsoft Dynamics CRM 4.0 序列号
    编写 Cookie
  • 原文地址:https://www.cnblogs.com/juechen/p/4721932.html
Copyright © 2011-2022 走看看