文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>POJ 2503 Babelfish解题报告

POJ 2503 Babelfish解题报告

时间:2010-04-25  来源:MC_ACM

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.

题意:

先给你一本字典,前面的是英文,后面是外文,输入字典结束标志为换行符。输入完字典后再输入你要查找的外文,如果字典里面有相应的外文,则输出该外文对应的英文,若没有,则输出eh。

代码:  

#include <cstdio>
#include <string>
#include <cstdlib>
using namespace std;
const int M = 100005, N = 12;
int n;
char dic[M][N];
struct node {
    int id, isend;
    node *next[26];
    node () {
         id = -1;
         isend = 0;
         memset(next, 0, sizeof(next) );
         }
    } Trie;
void insert ( char s[]) {
     int i, len = strlen(s);
     node *p = &Trie;
     for ( i = 0; i < len; i++ ) {
         if ( p->next[ s[i] - 'a' ] == NULL ) {
              p->next[ s[i] - 'a' ] = new node();
              }
   p = p->next[ s[i] - 'a' ];
         }
p->id = n;
p->isend = 1;
return;
     }
int search(char s[]) {
    int i, len = strlen(s);
    node *p = &Trie;
    for ( i = 0; i < len; i++ ) {
        if ( p->next[ s[i] - 'a' ] == NULL ) {
           return -1;
           }
   p = p->next[ s[i] - 'a' ];
        }
if ( p->isend == 1)
      return p->id;
return -1;
    }
void trav(node *p) {
    int i;
    if ( p == NULL ) {
       return ;
       }
    for ( i = 0; i < 26; i++ ) {
   if ( p->next[i] != NULL ) {
     trav( p->next[i] );
     }
   }
    }
int main () {
    int i, j, x, y, t;
    char buf[N * 2], str[N];
    while ( gets(buf) ) {
          if ( strlen(buf) == 0 ) break;
          sscanf(buf, "%s %s", &dic[n], str);
       insert(str);
       n++;
          }
while ( scanf(" %s", buf) != EOF ) {
          t = search(buf);
       if ( t != -1 )
            printf("%s\n", dic[t] );
    else printf("eh\n");
       }
    return 0;
   }
 


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载