- 浏览: 1307480 次
- 性别:
- 来自: 江苏
最新评论
-
honey_fansy:
的确,不要自己的支持就说完美支持,我的就不行,别说我的不是fi ...
无js实现text-overflow: ellipsis; 完美支持Firefox -
fanchengfei:
事件长微博,欢迎转发:http://weibo.com/332 ...
《在路上 …》 写代码也需要一点演技 – python2.6 的 class decorator -
blued:
没有报错,但排版效果一点都没有 咋回事。请指教
python排版工具 -
szxiaoli:
耍人呀,效果在哪儿呀
滑动效果 -
accaolei:
这个能监到控子目录吗?,我测试了一下,发现子目录里的文件监控不 ...
windows监控目录改动
题目+我的解答打包下载
http://www.cppblog.com/Files/zuroc/06_baidustar_translator.zip
题目:
百度语言翻译机
百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套独特的缩略语。他们在平时的交谈、会议,甚至在各种技术文档中都会大量运用。
为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩略语和专有名词翻译成日常语言。
输入要求:
输入数据包含三部分:
1. 第一行包含一个整数N(N<=10000),表示总共有多少个缩略语的词条;
2. 紧接着有N行的输入,每行包含两个字符串,以空格隔开。第一个字符串为缩略语(仅包含大写英文字符,长度不超过10字节),第二个字符串为日常语言(不包含空格,长度不超过255字节);
3. 从第N+2开始到输入结束为包含缩略语的相关文档(总长度不超过1000000个字节)。例:
6
PS 门户搜索部
NLP 自然语言处理
PM 产品市场部
HR 人力资源部
PMD 产品推广部
MD 市场发展部
百度的部门包括PS,PM,HR,PMD,MD等等,其中PS还包括NLP小组。
样例:in.txt
输出要求:
输出将缩略语转换成日常语言后的文档。(将缩略语转换成日常语言,其他字符保留原样)。例:
百度的部门包括门户搜索部,产品市场部,人力资源部,产品推广部,市场发展部等等,其中门户搜索部还包括自然语言处理小组。
样例:out.txt
评分规则:
1.程序将运行在一台Linux机器上(内存使用不作严格限制),在每一测试用例上运行不能超过10秒,否则该用例不得分;
2.要求程序能按照输入样例的格式读取数据文件,按照输出样例的格式将运行结果输出到标准输出上。如果不能正确读入数据和输出数据,该题将不得分;
3.该题目共有4个测试用例,每个测试用例为一个输入文件。各测试用例占该题目分数的比例分别为25%,25%,25%,25%;
4.该题目20分。
注意事项:
1.输入数据是中英文混合的,中文采用GBK编码。
GBK:是又一个汉字编码标准,全称《汉字内码扩展规范》。采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在40-FE 之间,排除xx7F。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。
2.为保证答案的唯一性,缩略语的转换采用正向最大匹配(从左到右为正方向)原则。请注意样例中PMD的翻译。
cpp 代码
- /*
- 我的思路
- 1.缩略语
- vector< string > //用来保存缩略语
- 按string的length排序,来满足"缩略语的转换采用正向最大匹配".
- 2.一次性的进行文本替换,以防止替换内容再次被替换
- map<pair<int,int>,string> //位置范围-缩略语
- vector<pair<int,int>> //保存位置范围
- map<string,string> //缩略语
- */
- #include <fstream>
- #include <sstream>
- #include <iostream>
- #include <vector>
- #include <map>
- #include <list>
- #include <string>
- #include <algorithm>
- #include <functional>
- using namespace std;
- #define BEG_END(c) (c.begin()),(c.end())
- typedef string::size_type str_size;
- /** 转换string为指定的类型 */
- template<typename Target, typename Source>
- Target lexical_cast(const Source& arg)
- {
- Target result;
- istringstream(arg)>>result;
- return result;
- }
- vector<str_size> find_all(const string& source , const string& aim)
- {
- vector<str_size> poses;
- str_size pos=0;
- str_size aim_len=aim.size();
- while ( (pos=source.find(aim, pos)) != string::npos)
- {
- poses.push_back(pos);
- pos += aim_len;
- }
- return poses;
- }
- bool is_long(const string& a , const string& b)
- {
- return a.length()>b.length();
- }
- bool is_first_small(const pair<str_size,str_size>& a , const pair<str_size,str_size>& b)
- {
- return a.first<b.first;
- }
- template<class T,class I>
- bool not_in_scope(I begin,const I& end,const T& aim)
- {
- for (;begin!=end;++begin)
- {
- if (
- (aim>=(begin->first) ) && (aim<= (begin->first+begin->second) )
- )return false;
- }
- return true;
- }
- int main()
- {
- string infile_name="in.txt" , outfile_name="out.txt";
- ofstream outfile(outfile_name.c_str());
- //ostream& outfile = cout;
- ifstream infile(infile_name.c_str());
- if (!infile)
- {
- cerr<<"Error : can't open input file "<<infile_name<<" .\n";
- return -1;
- }
- string line;
- vector<string> abbr_dict;
- map<string,string> abbr_word;
- getline(infile,line);
- for (int i=lexical_cast<int>(line);i!=0;--i)
- {
- getline(infile,line);
- string abbr,word;
- istringstream(line)>>abbr>>word;
- abbr_dict.push_back(abbr);
- abbr_word[abbr]=word;
- //cout<<abbr<<' '<<word<<'\n';
- }
- sort(BEG_END(abbr_dict),is_long);
- while (getline(infile,line))
- {
- typedef vector<pair<str_size,str_size> > replace_scope;
- replace_scope to_replace_scope;
- map<pair<str_size,str_size>,string> to_replace;
- for (
- vector<string>::iterator i=abbr_dict.begin(),end=abbr_dict.end();
- i!=end;
- ++i
- )
- {
- vector<str_size> poses=find_all(line,*i);
- str_size aim_len=i->size();
- for (vector<str_size>::iterator j=poses.begin(),end=poses.end();j
- !=end;++j)
- {
- pair<str_size,str_size> scope=make_pair(*j,aim_len);
- if (not_in_scope(BEG_END(to_replace_scope),*j))
- {
- to_replace_scope.push_back(scope);
- to_replace[scope]=*i;
- }
- }
- }
- sort(BEG_END(to_replace_scope),is_first_small);
- str_size offset=0;
- for (
- replace_scope::iterator i=to_replace_scope.begin(),end=to_replace_scope.end();
- i!=end;
- ++i
- )
- {
- str_size len=i->second ;
- string word=abbr_word[to_replace[*i]];
- line.replace(i->first+offset,len ,word);
- offset+=word.size()-len;
- }
- outfile<<line<<'\n';
- }
- return 0;
- }
发表评论
-
倒水问题的3个相关文章
2008-11-29 03:18 39713. starfish(海星) ( ) 信誉:97 2001 ... -
Programming in Lua 读书摘抄
2008-10-16 01:25 3671据某某C++的叛徒说"感觉很多地方 lua 都是鄙 ... -
一个图像配准的小程序
2008-05-16 04:36 5159为伊人而coding. 源代码/程序见文末附件 分享一下, ... -
诡异的Windows编程
2008-05-10 10:44 1783在winx的example中添加了一个picture cont ... -
一道按单词逆转字符串的面试题
2008-05-03 15:42 3025/* python的string是不可变的,故无法进行in-p ... -
前100大的元素
2008-04-12 13:31 1746//清理硬盘,备份一下以前的程序 #include <c ... -
Boost 1.35发布
2008-03-30 12:22 3027添加了12个库,其中有ASIO网络库,啊啊啊啊啊啊啊啊啊啊啊啊 ... -
读 代码优化 的总结
2007-11-09 13:02 2099系列文章见 http://blog.c ... -
百度之星2007初赛第一条-水果开会时段
2007-05-26 23:22 3932百度之星2007年初赛第一条 时间好紧张,只完成了一题... ... -
2006百度之星程序设计大赛试题-变态比赛规则(解答)
2007-05-15 10:57 41292006百度之星程序设计大赛试题-变态比赛规则(解答) 题目 ... -
[翻译]Berkeley DB 文档 - C++入门篇 - 1.3节 - 访问方式(Access Methods)
2007-05-11 16:45 3885[翻译]Berkeley DB 文档 - C+ ... -
[意译]Berkeley DB 文档 - C++入门篇 - 1.2节 - Berkeley DB 概述
2007-05-10 10:45 4089[意译]Berkeley DB 文档 - C+ ... -
C++ std名字空间ostream_iterator与的诡异问题
2007-05-09 13:06 6069为了方便显示map而自定义的两个函数,出现了一个诡异的问题,感 ... -
[小技巧]集成Astyle到Microsoft Visual Studio
2007-04-08 18:15 5150Astyle是非常好用的开源的C++代码整理工具,能使你凌乱的 ... -
smartwin++之旅_1
2007-03-01 21:47 5286= 概览 = Smartwin++是一个体现了现代的C++设 ... -
我的文章整理
2005-11-15 19:21 2044我的文章整理(点击浏览/下载阅读) 《程序员,在路上……》 ... -
学习wxWidgets
2005-11-19 03:33 2426写作中.... 下面是链接,请点击浏览,希望大家多多指教和提意 ... -
学习ICE 3.0
2005-11-23 22:01 1995写作中.... 下面是链接,请点击浏览,希望大家多多指教和提意 ... -
怎么链接到动态链接库呢?
2005-11-28 22:36 3977先谢谢cppblog的各位指教. 链接到静态库(*.lib)很 ... -
Function object(函数对象)
2005-12-01 20:14 2474学习《C++ Primer》的笔记 函数指针的一种替代策略是F ...
相关推荐
2006年百度之星程序设计大赛初赛题目——百度语言翻译机,题目不是很难,我用了C,C++,C#三种语言实现,在VS2008环境下编译通过。相关博文地址:http://blog.csdn.net/jocodeoe/article/details/7039285
### 百度之星十年试题集知识点总结 #### 百度之星程序设计大赛概览 - **背景介绍**:“百度之星”是由百度公司主办的一项面向全国大学生的程序设计竞赛,自2005年起至今已成功举办多届。该比赛旨在通过算法挑战激发...
【百度翻译插件】是为谷歌浏览器(Google Chrome)设计的一款强大的在线翻译工具,它集成了百度翻译的服务,使得用户在浏览网页时可以方便快捷地进行多语言之间的翻译。这款插件不仅支持文本翻译,还提供了诸多实用...
**标题详解:**“百度翻译API实现多语言的翻译(c#)” 在IT领域,开发跨语言交流的应用或工具时,经常会用到翻译API。百度翻译API是百度公司提供的一个强大的在线翻译服务,它允许开发者通过接口调用,实现多种语言...
在IT行业中,API(应用...总之,通过Java调用百度翻译API,我们可以轻松地为应用程序添加翻译功能,满足用户的跨语言交流需求。在实际开发中,需要注意API的使用限制、安全性和性能优化,确保服务的稳定性和用户体验。
PHP对接百度翻译接口API 实现多国语言翻译
使用百度翻译的api,必须知道每种语言,百度翻译使用什么单词表示的: 解决语音问题:这是百度翻译女声语音的url,喜欢的朋友可以收藏,以后可能用得上 注意里面有两个参数,一个是lan意思是要读出出来的是什么语言...
在本文中,我们将深入探讨如何使用C#编程语言构建一个基于百度翻译的多国语言翻译工具。这个工具能够实现批量翻译和自动翻译的功能,极大地提高了工作效率。为了开始我们的讨论,首先需要了解几个关键概念。 1. **...
本项目的核心是利用百度翻译API来实现小程序内的语言翻译功能。 百度翻译API是一个强大的在线翻译服务,支持多种语言之间的互译。在微信小程序中集成百度翻译,可以为用户提供便捷的翻译体验,比如在学习、旅行或者...
- 汇编语言程序的执行:将源程序翻译成机器语言程序,并执行机器语言程序。 3. 编程技术: - 数据类型:整数、实数、字符等。 - 变量的定义和使用:定义变量、赋值、使用变量等。 - 控制结构:顺序结构、分支...
通过上述实验指导书的学习,学生可以逐步掌握汇编语言的基本概念和操作技巧,从简单的指令使用到复杂的程序设计,每一步都旨在帮助学生深入理解汇编语言的编程思想和实践应用。这些实验不仅有助于提高学生的动手能力...
百度在线翻译API是百度开放平台提供的一项服务,它允许开发者通过调用API,将文本从一种语言翻译成另一种语言。要使用这个API,我们需要注册并获取百度API的密钥(AK和SK),这些密钥会在后续的请求中用于身份验证。...
本翻译机支持下列语言翻译: 中英、英中、中日、日中、中韩、韩中、中法、法中、中西、西中、中泰、泰中、中阿、阿中、中俄、俄中、英日、日英、英泰、泰英、英阿、阿英、英西、西英、英葡、葡英。 主要使用了北大唐...
《Rust程序设计语言》是官方的Rust编程语言教程,旨在帮助读者理解和掌握Rust语言的核心特性和最佳实践。这本书由Steve Klabnik和Carol Nichols撰写,并由Rust社区不断更新和完善。简体中文版是由Rust中文社区翻译的...
32位汇编语言程序设计知识点总结 本文档涵盖了32位汇编语言的重要知识点,包括汇编语言的基本概念、数据类型、寻址方式、寄存器、指令集、程序设计等方面的知识点。 一、汇编语言基础 * 汇编语言是一种低级语言,...
"多应用型计算机程序设计开发-程序设计-设计" ...计算机程序设计语言发展和计算机程序设计方法发展变化是计算机程序设计的核心内容,多应用型计算机程序的设计开发是计算机程序设计的重要应用之一。
书 名:Programming Windows程式开发设计指南 出版日期:2000/6/2 书 号:957-8239-73-4 I S B N:957-8239-73-4 原 作 者:Charles Petzold 译 者:余孟学
【湖南大学第四届程序设计大赛暨高校邀请赛试题及解题报告】 本次大赛是ACM(国际计算机协会)程序设计竞赛的区域赛事,旨在促进大学生在算法设计、编程和问题解决能力上的提升。作为一场高水平的竞技活动,它吸引...