通过率 25% · 提交 59 · 通过 15
在魔法大陆的「卷轴之塔」中,存放着成千上万的魔法卷轴。大法师常用 `show` 命令在水晶终端上查看某个法阵仓库下的所有卷轴名称。 然而,卷轴的排列顺序十分讲究:当学徒 先纵向浏览、再横向浏览时,卷轴的名称必须按照递增排列。 为了方便学徒阅读,卷轴的展示需要遵循以下规则: 1. 每行的总字符数不得超过 `viewWidth`。 2. ,并且相邻两列之间必须至少空 2 个空格。 3. 卷轴名称先纵向摆放,再横向排列(即先填满第一列的所有行,再依次填充后续列)。 4. 所有卷轴名称在纵向→横向阅读时,必须是词典序递增的。 你的任务是: 给定卷轴展示的最大行宽 `viewWidth` 以及卷轴名称列表 `scrollNames`,计算出展示所有卷轴所需的最少行数。
这类题属于华为可信认证科目一方向中「可信 / 贪心」方向的高频题型,通常考察对「可信 / 贪心」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行输入一个整数 viewWidth,满足 30 <= viewWidth <= 200。
第二行输入一个整数 n,表示卷轴数量,满足 1 < n <= 1000。
接下来 n 行,每行一个字符串,表示一个卷轴名称 scrollNames[i],满足:
1 <= len(scrollNames[i]) <= viewWidth输出一个整数,表示展示所有卷轴所需的最少行数。
示例 1
输入示例
44 4 FlameOrb20 Crystal9 CrystalC4 EmberStone12
输出示例
2
将卷轴名称按词典序排序后为:
Crystal9、CrystalC4、EmberStone12、FlameOrb20
展示效果如下(纵向优先):
Crystal9 EmberStone12
CrystalC4 FlameOrb20
从上到下、再从左到右查看时,顺序为:
Crystal9 → CrystalC4 → EmberStone12 → FlameOrb20,符合要求。
示例 2
输入示例
45 10 Altar1 Arcanum3 BeastDen4 BlightWood5 Dragonspire8 EldritchTome2 Moonwell9 ObsidianGate6 PhoenixRoost7 Starfall0
输出示例
4
排序结果为:
Altar1、Arcanum3、BeastDen4、BlightWood5、Dragonspire8、EldritchTome2、Moonwell9、ObsidianGate6、PhoenixRoost7、Starfall0
排列如下:
Altar1 Dragonspire8 PhoenixRoost7
Arcanum3 EldritchTome2 Starfall0
BeastDen4 Moonwell9
BlightWood5 ObsidianGate6
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有