2006年百度之星程序设计大赛试题初赛题目-题6-百度语言翻译机
2012-05-18 21:31
239 查看
百度语言翻译机
时限 1s
百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。
为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩率语和专有名词翻译成日常语言。
输入数据:
输入数据包含三部分
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 小组。
输出例子:
百度的部门包括门户搜索部,产品市场部,人力资源部,产品推广部,市场发展部等等,其中门户搜索部还包括自然语言处理小组。
注意:
1 . 输入数据中是中英文混合的,中文采用 GBK 编码。
2 . 为保证答案的唯一性,缩率语的转换采用正向最大匹配(从左到右为正方向)的原则。请注意输入例子中 PMD 的翻译。
my answer:
一开始正向最大匹配没有理解。以为要处理NLPS这样的,如果按NLPS算只有一个不匹配,按PS有两个不匹配,往动态规划考虑。
后来发现“包含缩略语的相关文档”中的缩略语前后都是有空格的,一个缩略语只代表一种结果,后字典树就可以了
但是题目有个BUG,将缩率语转换成日常语言,其他字符保留原样。可是给的样例输出中,缩略语前后的空格都没有了
时限 1s
百度的工程师们是非常注重效率的,在长期的开发与测试过程中,他们逐渐创造了一套他们独特的缩率语。他们在平时的交谈,会议,甚至在各中技术文档中都会大量运用。
为了让新员工可以更快地适应百度的文化,更好地阅读公司的技术文档,人力资源部决定开发一套专用的翻译系统,把相关文档中的缩率语和专有名词翻译成日常语言。
输入数据:
输入数据包含三部分
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 小组。
输出例子:
百度的部门包括门户搜索部,产品市场部,人力资源部,产品推广部,市场发展部等等,其中门户搜索部还包括自然语言处理小组。
注意:
1 . 输入数据中是中英文混合的,中文采用 GBK 编码。
2 . 为保证答案的唯一性,缩率语的转换采用正向最大匹配(从左到右为正方向)的原则。请注意输入例子中 PMD 的翻译。
my answer:
一开始正向最大匹配没有理解。以为要处理NLPS这样的,如果按NLPS算只有一个不匹配,按PS有两个不匹配,往动态规划考虑。
后来发现“包含缩略语的相关文档”中的缩略语前后都是有空格的,一个缩略语只代表一种结果,后字典树就可以了
但是题目有个BUG,将缩率语转换成日常语言,其他字符保留原样。可是给的样例输出中,缩略语前后的空格都没有了
#include <iostream> #include "Trie.h" using namespace std; string str1, str2; int main() { int n, i; dictree *root = new dictree; cin>>n; for(i = 0; i < n; i++) { cin>>str1>>str2; root->insert(str1, str2); } char c; string str = ""; while(c = getchar()) { if(c >= 'A' && c <= 'Z') str = str + c; else { if(str != "") { string ret = root->search(str); if(ret == "") cout<<str; else cout<<ret; str = ""; } cout<<c; } } cout<<endl; delete root; return 0; }
相关文章推荐
- 2006年百度之星程序设计大赛试题初赛题目-题6-百度语言翻译机
- 2006 年百度之星程序设计大赛初赛题目 6 百度语言翻译机
- 2006 年百度之星程序设计大赛初赛题目 6 百度语言翻译机
- 2006 年百度之星程序设计大赛初赛题目 6 百度语言翻译机
- 2006年百度之星程序设计大赛试题初赛题目-题5-座位调整
- 2006年百度之星程序设计大赛试题初赛题目-题5-座位调整
- 2007年百度之星程序设计大赛试题初赛题目-题3-实习生小胖的百度网页过滤器
- 2007年百度之星程序设计大赛试题初赛题目-题3-实习生小胖的百度网页过滤器
- 2006年百度之星程序设计大赛试题初赛题目-题3-变态的比赛规则
- 2006年百度之星程序设计大赛试题初赛题目-题4-剪刀石头布
- 2007年百度之星程序设计大赛试题初赛题目-题4-百度时间
- 2006年百度之星程序设计大赛试题初赛题目-题2-蝈蝈式的记分
- 2006年百度之星程序设计大赛试题初赛题目-题4-剪刀石头布
- 2007年百度之星程序设计大赛试题初赛题目-题4-百度时间
- 2006年百度之星程序设计大赛试题初赛题目-题1-饭团的烦恼
- 2007年百度之星程序设计大赛试题初赛题目-题1-百度的高级搜索方法
- 2007年百度之星程序设计大赛试题初赛题目-题1-百度的高级搜索方法
- 2005年百度之星程序设计大赛试题初赛题目-题3
- 2006年百度程序设计大赛Astar初赛题目
- 2005年百度之星程序设计大赛试题初赛题目 第四题(共四题 100 分):低频词过滤( 40 分)