当前位置:   article > 正文

2024年华为OD机试真题- 考古学家-(C++/Java/python)-OD统一考试(C卷D卷)_华为od题库

华为od题库

   2024华为OD机试真题目录-(B卷C卷D卷)-【C++ Java Python】   

题目描述

有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段,原地发现n个断口整齐的石碑碎片。

为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数,你能帮忙吗?

输入描述

第一行输入 n

  • n表示石碑碎片的个数

第二行依次输入石碑碎片上的文字内容s,共有n组。 

输出描述

输出石碑文字的组合(按照升序排列),行末无多余空格。

备注

如果存在石碑碎片内容完全相同,则由于碎片间的顺序变换不影响复原后的碑文内容,即相同碎片间的位置变换不影响组合。

用例1

输入

3

a b c

输出

abc

acb

bac

bca

cab

cba

说明

当石碑碎片上的内容为“a”,“b”,“c”时,则组合有“abc”,“acb”,“bac”,“bca”,“cab”,“cba”

用例2

输入

3

a b a

输出

aab

aba

baa

说明

当石碑碎片上的内容为“a”,“b”,“a”时,则可能的组合有“aab”,“aba”,“baa”

用例3

输入

3

a b ab

输出

aabb

abab

abba

baab

baba

说明

当石碑碎片上的内容为“a”,“b”,“ab”时,则可能的组合有“aabb”,“abab”,“abba”,“baab”,“baba”

考点

全排列

题目解析

本题可以用全排列进行求解。本题比较难的地方在于理解树层去重,可以尝试通过下面的例子去理解,力扣47题链接:https://leetcode.cn/problems/permutations-ii/description/。

题目给出的用例:

如nums = [1,1,2],有重复的数字,在递归过程会产生重复的组合,可以通过判断略过这些重复的组合,从而提高效率。生成全排列可以模拟出一个树形结构,1用不同颜色来区分,如下图所示:

该树结构具有如下特点:

第一层节点,我们可以选择数组任意一个元素࿰

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/955957
推荐阅读
相关标签
  

闽ICP备14008679号