百度语言翻译机

原创 2007年09月30日 22:07:00
今天看到百度语言翻译机的题目,闲着没有事就练习一下
试题:
百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套
独特的缩略语。他们在平时的交谈、会议,甚至在各种技术文档中都会大量运用。
 
为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决
定开发一套专用的翻译系统,把相关文档中的缩略语和专有名词翻译成日常语言。
 
输入要求:
 
输入数据包含三部分:
 
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。总计 2
3940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 
个,图形符号 883 个。2.为保证答案的唯一性,缩略语的转换采用正向最大匹配(从
左到右为正方向)原则。请注意样例中PMD的翻译 

#include <iostream>
#include <string>
#include <fstream>
#include <map>
using namespace std;
 
typedef map<string,string>::reverse_iterator RCIR;
//将DealString中的tokString替换为dstString

void str_replace(string & DealString,const string & tokString,const string & dstString)

{
    string::size_type len=tokString.size();
    string::size_type steplen=dstString.size();
    string::size_type npos=0;
 
    while( (npos=DealString.find(tokString,npos))!=string::npos)
    {
       DealString.replace(npos,len,dstString);

       npos +=steplen;

    }
 
    return;
}
 
int main(void)
{

    map<string,string> MyMap;

    ifstream inFile("in.txt");
    ofstream outFile("out.txt");
 
    if(inFile==NULL)
    {
       cerr<<"打开文件失败"<<endl;

       return -1;

    }
 
    if(outFile==NULL)
    {
       cerr<<"创建文件失败"<<endl;

       return -1;

    }
   
    string KeyWorld;
    string KeyWorldStr;
    int KeyWorldCount=0;
   
    //读取缩略语行数
    inFile>>KeyWorldStr;

    KeyWorldCount =atoi(KeyWorldStr.c_str());

    cout<<"缩略语总共有"<<KeyWorldCount<<"行"<<endl;
    cout<<"================================"<<endl;
    cout<<"缩略语内容为:"<<endl;
 
    //读取缩略语到map中
    while(KeyWorldCount&&(inFile>>KeyWorld>>KeyWorldStr))
    {
         MyMap[KeyWorld] =KeyWorldStr;
        KeyWorldCount--;
    }
   
    for(RCIR rpos=MyMap.rbegin(); rpos!=MyMap.rend(); rpos++)
    {
       cout<<rpos->first<<"    "<<rpos->second<<endl;
    }
   
    //替换缩略语
    string TextLine;
    getline(inFile,TextLine,'/n');
    while(getline(inFile,TextLine,'/n'))
    {
       for(RCIR rpos=MyMap.rbegin(); rpos!=MyMap.rend(); rpos++)
       {
           str_replace(TextLine,rpos->first,rpos->second);
       }
       outFile<<TextLine<<endl;
    }
 
    inFile.close();
    outFile.close();
   
    system("pause");
    return 0;
}

程序设计:百度语言翻译机

1.百度语言翻译机 百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套独特的缩略语。他们在平时的交谈、会议,甚至在各种技术文档中都会大量运用。为了让新员工可以更快地适应百度的...
  • Realdodo
  • Realdodo
  • 2006年05月28日 22:18
  • 1222

ACM1、百度语言翻译机

百度语言翻译机  百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。  为了让新员工可以更快地...
  • sarahyq
  • sarahyq
  • 2014年07月13日 20:38
  • 340

哈希法求解百度语言翻译机

题目来源:http://www.programfan.com/acm/show.asp?qid=112#comment 百度语言翻译机 2006 年百度之星程序设计大赛初赛题目 6 百度语...
  • rually
  • rually
  • 2013年02月17日 19:01
  • 790

百度程序设计大赛初赛复赛题目

初赛  1.百度语言翻译机  百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套独特的缩略语。他们在平时的交谈、会议,甚至在各种技术文档中都会大量运用。  为了让新员工可以更...
  • stevexk
  • stevexk
  • 2006年06月16日 19:27
  • 1803

百度之星编程大赛--百度语言翻译机(解答)

百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套独特的缩略语。他们在平时的交谈、会议,甚至在各种技术文档中都会大量运用。为了让新员工可以更快地适应百度的文化,更好地阅读公司...
  • vargas
  • vargas
  • 2006年06月17日 23:27
  • 1427

算法小记02--学习Python之百度语言翻译机

算法小记02--学习Python之百度语言翻译机 最近在无聊学习pyton语言,看到下面的ACM题目就试试手。 2006 年百度之星程序设计大赛初赛题目 6 百度语言翻译机 时限 ...
  • ahcyd008
  • ahcyd008
  • 2013年05月30日 21:16
  • 669

翻译机

Dict = { 'i':u'我','my':u'我的','is':u'是', 'name':u'名字','that':u'这','hello':u'大家好', 'guys':u'伙伴们', ...
  • Lambert_Zhang
  • Lambert_Zhang
  • 2015年02月24日 15:51
  • 263

百度之星编程大赛-语言翻译机(C#解答)

偶的C遗忘多年了,还是用C#编一个吧,呵呵 1.百度语言翻译机  百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套独特的缩略语。他们在平时的交谈、会议,甚至在各种技术文档中...
  • iwteih
  • iwteih
  • 2006年06月23日 10:20
  • 1885

C语言50题之百度笔试题

判断你的电脑存储方式是大端还是小端大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位...
  • jhcconan614
  • jhcconan614
  • 2016年12月18日 11:40
  • 488

解释器模式--自定义语言翻译机(行为模式03)

什么是行为模式 给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 文法和解释器是编译原理课程中的术语,这里我们说的通俗一点,以例子来说明。语法好比我们...
  • Z_DingHao
  • Z_DingHao
  • 2017年05月10日 23:36
  • 221
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:百度语言翻译机
举报原因:
原因补充:

(最多只允许输入30个字)