华为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卷刷题日记 文章被收录于专栏

机试刷题记录

全部评论

相关推荐

10-11 15:42
皖西学院 Java
青鱼LINK:我硕士,也是java0面试,吾道不孤
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务