博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2503, Babelfish
阅读量:6606 次
发布时间:2019-06-24

本文共 2206 字,大约阅读时间需要 7 分钟。

Time Limit: 3000MS  Memory Limit: 65536K

Total Submissions: 12536  Accepted: 5529

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.

 

Source

Waterloo local 2001.09.22


//
 POJ2503.cpp : Defines the entry point for the console application.
//
#include 
<
iostream
>
using
 
namespace
 std;
struct
 Word
{
    Word():next(
0
){}
    
char
 from[
12
], to[
12
];
    Word
*
 next;
};
inline 
int
 calcKey(
char
 word[],
int
 SIZE)
{
    
int
 key 
=
 
0
;
    
int
 K 
=
 strlen(word);
    
for
(
int
 j
=
0
; j
<
K; 
++
j)
        key
=
((key
<<
2
)
+
(((
int
)word[j])
>>
4
))
^
(((
int
)word[j])
<<
10
);
    key 
=
 key 
%
 SIZE;
    key 
=
 key 
<
 
0
 
?
 key 
+
 SIZE : key;
    
return
 key;
}
int
 main(
int
 argc, 
char
*
 argv[])
{
    
const
 
int
 SIZE 
=
 
100003
;
    Word hash[SIZE];
    
char
 w[
25
];
    
while
(gets(w)
&&
 w[
0
!=
 
0
)
    {
        Word
*
 pw 
=
 
new
 Word;
        sscanf(w,
"
%s %s
"
,pw
->
to,pw
->
from);
        
int
 key 
=
 calcKey(pw
->
from, SIZE);
        Word
*
 pt 
=
 
&
hash[key];
        
while
 (pt
->
next 
!=
 NULL) pt 
=
 pt
->
next;
        pt
->
next 
=
 pw;
    }
    
while
(gets(w)
&&
 w[
0
!=
 
0
)
    {
        
int
 key 
=
 calcKey(w, SIZE);
        Word
*
 pt 
=
 
&
hash[key];
        
bool
 found 
=
 
false
;
        
while
 (pt
->
next 
!=
 NULL)
        {
            pt 
=
 pt
->
next;
            
if
 (strcmp(pt
->
from, w)
==
0
)
            {
                found 
=
 
true
;
                
break
;
            }
        }
        
if
(found) printf(
"
%s\n
"
,pt
->
to);
        
else
 printf(
"
eh\n
"
);
    }
    
return
 
0
;
}

转载于:https://www.cnblogs.com/asuran/archive/2009/10/09/1579598.html

你可能感兴趣的文章
阿里架构师都在学的知识体系
查看>>
[Python]json 错误xx is not JSON serializable
查看>>
MVC用户验证
查看>>
记录东方财富网的自定义字体反爬
查看>>
linux命令 --> pwd命令
查看>>
14猜拳游戏
查看>>
【4】通过简化的正则表达式处理字符串
查看>>
PHP中使用Elasticsearch
查看>>
layer 不居中的坑爹问题
查看>>
input file样式,文件路径、文件名的获取
查看>>
while循环和 do while 的区别
查看>>
android 运行时出现The connection to adb is down, and a severe error has occured.(转)
查看>>
Oracle数据库修改表结构
查看>>
问题:关于贴友一个用js传递value默认值的简单实现
查看>>
Python dict dictionaries Python 数据结构——字典
查看>>
【SICP练习】151 练习4.7
查看>>
MySQL高可用架构之Keepalived+主从架构部署
查看>>
如何在分组时,连接多个行数据
查看>>
Codeforces 1149 B - Three Religions
查看>>
js中的scrollTop、offsetTop、clientTop
查看>>