通过率 79% · 提交 14 · 通过 11
在魔法大陆中,存在一座不断扩展的 Magic Tower。 魔法塔由若干层(Layer)组成,每一层塔层被划分为固定数量的单元(Cell),用于存放魔法能量。 系统最初只有一层基础塔层(编号为 `0`)。 当空间不足时,魔法塔会自动生成新的扩展塔层,编号从 `1` 开始依次递增。 当能量被释放后,系统会在满足条件时自动回收完全空闲的扩展塔层。 你需要根据给定的一系列操作,实现该系统。 --- 操作说明 1. 初始化系统
这类题属于华为可信认证科目一方向中「可信 / 系统设计」方向的高频题型,通常考察对「可信 / 系统设计」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
Q,表示操作总数Q 个操作MagicTowerQ <= 10004 <= cellCount <= 16capacity 为 4 * 1024 的倍数,且 capacity <= 2 * 1024 * 1024capacity / cellCount 为 4 的倍数volume <= capacity0 <= layerId < 32)nullallocate 输出一行两个整数:layerId startCellIdrelease 输出一行:True 或 Falsequery 输出若干行:每行 layerId freeCellCount示例 1
输入示例
6 MagicTower 4096 4 allocate 1023 allocate 1025 release 0 0 allocate 2048 query
输出示例
null 0 0 0 1 True 1 0 0 2 1 2
MagicTower 4096 4 初始化魔法塔,创建 1 个塔层(编号 0),每层包含 4 个晶格,每个晶格容量为 1024。
allocate 1023 申请 1023 单位能量,仅需 1 个晶格,在塔层 0 的第 0 号晶格处分配。
allocate 1025 申请 1025 单位能量,需要 2 个连续晶格,在塔层 0 的第 1、2 号晶格处分配。
release 0 0 释放塔层 0 中起始晶格为 0 的那次分配,释放成功。
allocate 2048 申请 2048 单位能量,需要 2 个连续晶格,由于塔层 0 的空闲晶格不连续,系统新增塔层 1 并在其第 0 号晶格处分配。
query 查询当前塔层状态,结果显示塔层 0 和塔层 1 各有 2 个空闲晶格。
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有