北京大学英语笔译,北大OJ(POJ 2503)在线翻译

 2023-09-22 阅读 22 评论 0

摘要:描述 你刚从滑铁卢搬到一个大城市。这里的人说着一种难以理解的外语方言。幸运的是,你有一本字典来帮助你理解它们。 输入 北京大学英语笔译、输入由多达100,000个字典条目组成,后面跟着一个空行,后面跟着多达100,000个单词的消息。每个字典条目都是一行

描述

你刚从滑铁卢搬到一个大城市。这里的人说着一种难以理解的外语方言。幸运的是,你有一本字典来帮助你理解它们。

输入

北京大学英语笔译、输入由多达100,000个字典条目组成,后面跟着一个空行,后面跟着多达100,000个单词的消息。每个字典条目都是一行,包含一个英语单词,后跟一个空格和一个外语单词。任何外来词在字典中都只出现一次。这条信息是一串外语单词,每行一个单词。输入的每个单词都是一个不超过10个小写字母的序列。

输出

输出是将信息翻译成英文,每行一个单词。词典里没有的外来词应该翻译成“eh”。

样例输入

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

java百度翻译。样例输出

cat
eh
loops

提示

输入输出大,建议使用scanf和printf。


实现技巧:

Java翻译,(1)输入输出较多,推荐使用scanf()和printf()

(2)自定义cmp函数,对字符串使用sort排序

(3)灵活使用C和C++提供的输入函数(cin.get()、cin.peek()等)对输入进行处理

(4)由于词量较大,可以使用二分查找加快查找词条速度。用结构体存储两个字符串,

定义cmp使用自带的sort排序。应该注意的是发现空行(用cin.peek()),每次输入完一行词条,用cin.get()将换行处理掉。

解题代码:

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
struct Entry{char english[11];char foreign[11];
}ent[100005];
int cmp(Entry entry1,Entry entry2){return strcmp(entry1.foreign,entry2.foreign)<0;
}
int main(){int num=0;//记录个数char word[11];while(true){scanf("%s %s",ent[num].english,ent[num].foreign);num++;cin.get();if(cin.peek() == '\n') break;} //回车后输入查找sort(ent,ent+num,cmp);while(scanf("%s",word)!=EOF){int left=0, right = num-1;int n=0;while(left<=right){int mid=left+(right-left)/2;n=strcmp(ent[mid].foreign,word);if(n<0) left = mid+1;else if(n>0) right = mid-1;else{printf("%s\n",ent[mid].english);break;}}if(n) printf("eh\n");  //n不等于0说明没有找到}return 0;
}

 

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/82149.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息