【华为机试】2023年真题B卷(python)-考古问题

一、题目

题目描述:

考古问题,假设以前的石碑被打碎成了很多块,每块上面都有一个或若干个字符,请你写个程序来把之前石碑上文字可能的组合全部写出来,按升序进行排列。

二、输入输出

三、示例

示例1:

输入输出示例仅供调试,后台判题数据一般不包含示例

输入:

3

a b c

输出

abc

acb

bac

bca

cab

cba
示例2:

输入输出示例仅供调试,后台判题数据一般不包含示例

输入

3

a b a

输出

aab

aba

baa

四、要求

时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld

五、解题思路

排列组合问题,简单的 DFS

六、参考代码

python 复制代码
# -*- coding: utf-8 -*-
'''
@File    :   2023-B-考古问题.py
@Time    :   2023/12/30 22:51:00
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''

# import os
# import re
# import sys
# import copy
# import math
# import queue
# import functools
# from queue import Queue
# from collections import Counter, defaultdict

def permutations(prefix, remaining, result):
    """
    生成所有可能的排列组合

    Args:
        prefix (str): 当前生成的排列组合的前缀
        remaining (list): 剩余的字符列表
        result (list): 存储生成的排列组合的结果列表
    """
    for i in range(len(remaining)):
        str_i = prefix + remaining[i]
        remaining_i = remaining[:i] + remaining[i+1:]
        if not remaining_i:
            if str_i not in result:
                result.append(str_i)
        else:
            permutations(str_i, remaining_i, result)


result = []
num = int(input())  # 输入字符块数量
list_n = input().split(' ')  # 输入字符块列表
permutations('', list_n, result)  # 生成排列组合
result.sort()  # 对结果进行排序
for s in result:
    print(s)  # 输出结果
相关推荐
BK贝壳1 小时前
亿级用户签到位图选型复盘:用 bool-hybrid-array 扛冷启动打卡,也把它和 Roaring/Redis 的边界测清楚了
数据结构·python·性能优化·numpy
2601_966949653 小时前
如何根据研究的起止时间截取分钟级行情?Python 实战与 QuantDash 数据处理指南
开发语言·python·pandas·量化交易·1024程序员节·股票数据·quantdash
拓恒技术5 小时前
无人机巡检AI算法的工程化落地:从需求到交付的5个核心环节
人工智能·算法·无人机
晨曦中的暮雨5 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶
java·开发语言·算法
怕浪猫5 小时前
Claude Code vs Codex:Computer Use 实现原理深度拆解
算法·面试·github
罗西的思考7 小时前
AI 时代的 “房谋杜断”:如何培养能力、品味与判断力
人工智能·算法·机器学习
淡海水7 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
在世修行7 小时前
智学文枢:页面切换与跨页数据预填
python·桌面应用·signal·1024程序员节·pyside·跨页跳转·状态预填
2601_962885728 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
打工仔折腾 AI8 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化