华为OD机试统一考试D卷C卷 - 考古学家考古问题
题目描述
有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段,原地发现n个断口整齐的石碑碎片。为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数,你能帮忙吗?
输入描述
第一行输入n,n表示石碑碎片的个数。
第二行依次输入石碑碎片上的文字内容s,共有n组。
输出描述
输出石碑文字的组合(按照升序排列),行末无多余空格。
用例
输入 | 3 a b c |
输出 | abc acb bac bca cab cba |
说明 | 无 |
输入 | 3 a b a |
输出 | aab aba baa |
说明 | 无 |
Java
import java.util.*;
public class Main {
// 深度优先搜索函数
public static void dfs(String[] charArray, int depth, StringBuilder path, boolean[] used, List<String> result) {
// 如果碎片都已经被使用过,将当前组合加入结果中
if (depth == charArray.length) {
result.add(path.toString());
return;
}
for (int i = 0; i < charArray.length; i++) {
// 如果碎片已经被使用过,则跳过
if (used[i]) {
continue;
}
// 如果当前碎片和前一个碎片相同,并且前一个碎片还没有被使用,则跳
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
机试E卷D卷刷题日记 文章被收录于专栏
机试刷题记录