1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 年百度之星程序设计大赛初赛题目 6 百度语言翻译机

年百度之星程序设计大赛初赛题目 6 百度语言翻译机

时间:2023-08-23 19:29:13

相关推荐

 年百度之星程序设计大赛初赛题目 6  百度语言翻译机

百度语言翻译机

年百度之星程序设计大赛初赛题目 6

百度语言翻译机

时限 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 的翻译。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 上面是题目,看似这道题很简单,做个简单的map,然后再做个映射可以解决,但是这样做的时间复杂度是O(n*m)。m为最长的一个缩略语。因为每次需要对缩略语进行匹配,这就类似于在字符串中查找另一个字符串,我们很容易想到可以使用例如KMP的算法,这样可以把时间复杂度降到O(n+m)。但问题是这里的缩略语不止一个。所以简单的使用KMP算法很难解决这个问题。所以我们可以使用一个有向图,将所有的缩略语放到图中,再在各个节点上放置回退的位置。这样就可以将所有的缩略语一次匹配。下次把实现给出。:) 当然我们还可以用广义后缀树解决这个问题,但是广义后缀树付出的代价是空间复杂度比较大,当然优势在于如果提前建立了这个树,我们可以在O(k)的时间里解决问题,k是缩略语的数量。到底是用哪种方法要视m和k那个更小决定。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。