最新华为OD机试真题-石碑文字组合(200分)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-D卷的三语言AC题解

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

=> 石碑文字组合(200分) <=

华为OD

🌍 评测功能需要 =>订阅专栏<= 后联系清隆解锁~

🍓OJ题目截图

alt

🍪 石碑文字组合

问题描述

考古学家 LYA 在一次考古挖掘中发现了一块断裂成 段的石碑,每一段石碑上都刻有一个小写字母。为了破解石碑的内容,LYA 需要将这 段石碑按照一定的顺序进行排列组合。现在请你帮助 LYA 计算出所有可能的石碑文字组合,并按字典序升序输出。

输入格式

第一行包含一个正整数 ,表示石碑碎片的数量,满足

第二行包含 个由空格隔开的小写字母,表示每段石碑上的文字内容。

输出格式

按字典序升序输出所有可能的石碑文字组合,每个组合占一行。

样例输入

3
a b c
3
a b a

样例输出

abc
acb
bac
bca
cab
cba
aab
aba
baa

数据范围

题解

本题是一道典型的排列组合问题,可以使用 DFS(深度优先搜索)或回溯法来解决。

具体思路如下:

  1. 用一个数组 vis 来标记每个字母是否已经被使用过,初始时所有字母都未被使用。

  2. 从第一个位置开始,枚举每个未被使用过的字母,将其加入当前排列,并标记为已使用。

  3. 递归处理下一个位置,直到所有位置都被填满,得到一个完整的排列,将其加入答案数组。

  4. 回溯时,将当前位置的字母标记为未使用,以便在其他排列中重新使用。

  5. 当所有排列都被生成后,对答案数组进行去重和排序,按字典序升序输出即可。

根据上述思路,我们可以很容易地写出 DFS 或回溯的代码。时间复杂度为 ,其中 为石碑碎片的数量。由于 的范围较小,因此该算法可以在规定时间内完成。

参考代码

  • Python
def dfs(idx, cur):
    if idx == n:
        ans.append(''.join(cur))
        return
    for i in range(n):
        if not vis[i]:
            vis[i] = True
            cur.append(s[i])
            dfs(idx + 1, cur)
            vis[i] = False
            cur.pop()

n = int(input())
s = input().split()
vis = [False] * n
ans = []
dfs(0, [])
ans = sorted(set(ans))
for a in ans:
    print(a)
  • Java
import java.util.*;

public class Main {
    static void dfs(int idx, ArrayList<String> cur, String[] s, boolean[] vis, ArrayList<String> ans, int n) {
        if (idx == n) {
            StringBuilder result = new StringBuilder();
            for (String str : cur) {
                result.append(str);
            }
          

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

最新华为OD机试-E+D卷 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD-E/D卷的题目汇总和(Java/Cpp/Python)三语言解析 + 部分题目提供OJ在线评测

全部评论
🌍 评测功能需要 订阅专栏 后联系清隆解锁~
点赞 回复 分享
发布于 07-02 11:07 浙江

相关推荐

07-17 12:24
牛客_运营
#考公#牛牛今天的解答来啦!牛牛发现好多想进体制内的宝子不清楚遴选究竟是什么🔥牛牛今天给大家总结好了,看完你就懂了!✅什么是遴选?遴选是挑选、选拔之意,遴选全称是公务员公开遴选,指市(地)级以上机关从下级机关公开择优选拔任用内设机构公务员,是公务员内部的竞争性转任和选拔,也是一次“二次择优”的机会。✅遴选特点(一)遴选是公务员转任的一种重要方式,很大的一个特点是上级机关直接向下级基层机关选人,可越级遴选,遴选通过人员工作单位的级别将有很大的提高。(二)遴选包含了职务平调和提拔两种可能。遴选更多的时候是职务的平调,科员职位遴选科员,这就有点等同于选调。也有一些遴选职位是选拔的,遴选成功职务将得到晋升,科员的可以遴选为副主任科员,副科的可以遴选为主任科员,这就有点等同于公开选调,但遴选的都为内设机构公务员。(三)遴选要求有基层工作经历。《公务员公开遴选办法(试行)》(中组发〔2013〕7号)规定参加公开遴选的公务员应当具有2年以上基层工作经历和2年以上公务员工作经历,我们简称为“双2经历”。部分岗位要求在现任岗位的任期不得少于2年。✅遴选资格条件(一)具有公务员身份且在行政编制、公务员岗位;(二)政治素质良好,品行端正;(三)勤奋敬业,工作能力强;(四)大学本科以上文化程度;(五)公务员年度考核均为称职以上等次;(六)具有正常履行职责的身体条件;(七)符合拟遴选职位要求的其他资格条件。具有下列情形之一的,不得参加公开遴选:尚在试用期内的;受处分期间或者未满影响期限的;正在接受审计、纪律审查,或者涉嫌犯罪,司法程序尚未终结的;法律、法规和政策规定的其他情形。✅遴选需要准备材料同意报考证明只是刚刚开了个头,还要准备包括但不限于以下材料:1)部分地区的同意报考证明(或报名表)是要求编制主管部门同意报考并盖章。2)要求编制管理权限经主管部门审核盖章,那么就需要地区组织部门同意盖章。3)提供登记表,还得找主管部门。4)最低服务年限或满最低服务年限证明材料。5)由现工作单位党组织出具党组织关系证明材料。6)所在单位纪检组或纪检部门门提供个廉洁自律情况材料。✅遴选考试题型客观题+主观题;主观题客观题一般有单选、多选、填空、判断,在一些专业试卷例如纪委考试,还有以案例题形式出现的客观题;主观题一般有简答、论述、公文写作、材料分析/案例分析、大作文。中央机关遴选全部是主观题,分A卷B卷,副处长和一级至四级调研员公开遴选职位和公开选调职位,考案例分析与对策性论文一科(A类),一级主任科员及以下职级公开遴选职位考案例分析一科(B类)省直遴选考试一般为主观题,极少省直遴选考客观题。市直遴选考试中,考客观题的地区较多主观题是必考题。简答题、论述题大家耳熟能详。材料分析/案例分析是什么?可以看做是公务员考试中的申论,但是考察方向又与申论有所区别。✅遴选之后遴选并不能一劳永逸假使遴选上岸了,未来可能也要面临着更高的工作要求、更大的工作压力、另起炉灶的生活节奏······考上之后发现不适应选择回原单位的大有人在。但这么个折腾法,并不是一个好的人生规划。就像罗翔老师说的“任何选择你都会后悔,这是必然的,因为人的选择一定是不充分理性的,人做不到充分理性的选择”。#牛客在线求职答疑中心#
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务