通过率 39% · 提交 18 · 通过 7
在艾尔德拉大陆,法师们用组成的魔法阵列,用以吸收元素能量。每一座魔晶高塔是一个长方体模块,其底面尺寸固定,而高度由魔晶能量决定。每个魔晶高塔的尺寸规则如下:长度固定为1个魔法单位,宽度固定为2个魔法单位,高度为对应位置的魔晶能量值。若某位置的魔晶能量为0,则表示该位置不存在高塔。阵列排列规则(俯视视角):输入给定一个正整数m,表示每一行最多可容纳的高塔数量。给定一个一维数组energy,其中下标i对应一座高塔,其二维坐标(row, col)的计算方式为:row = i / m;若row为偶数:col = i % m;若row为奇数:col = m - 1 - (i % m)。该排列方式形成“之字形/蛇形”结构。若某个二维坐标未被数组energy覆盖(即不存在对应的下标),则该位置的高度视为0。魔法计算规则:仅当某个位置的魔晶能量h > 0时,该高塔才参与表面积计算。一、顶部与底部封印面积:只要高塔存在,就一定具有顶部和底部封印,其总面积为:top_bottom = 2 * (1 * 2) = 4。该部分与相邻高塔无关。二、四个侧面的魔法暴露面积:若相邻方向存在高度更高或相等的高塔,则被遮挡的部分不计入暴露面积。若该方向不存在相邻高塔(阵列边界),则相邻高度视为0。左侧(col - 1方向):left = 1 * max(0, h - left_height);右侧(col + 1方向):right = 1 * max(0, h - right_height);上侧(row - 1方向):up = 2 * max(0, h - up_height);下侧(row + 1方向):down = 2 * max(0, h - down_height)。三、总暴露表面积:每一座高塔的贡献为:4 + left + right + up + down。整个魔晶阵列的总暴露表面积为所有高塔贡献之和。
这类题属于华为可信认证科目一方向中「可信 / 模拟」方向的高频题型,通常考察对「可信 / 模拟」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行输入一个整数 m,表示每行最多的高塔数量。 第二行输入一个整数 k,表示魔晶高塔模块的数量。 第三行输入 k 个非负整数 energy[0] 到 energy[k-1],表示各位置的魔晶能量高度。
1 <= k <= m * menergy[i] <= 1000输出一个整数,表示整个魔晶高塔阵列的总魔法暴露表面积。
示例 1
输入示例
2 2 1 2
输出示例
24
输入中给定 m = 2,高度数组为 [1, 2]。
首先按照蛇形规则将一维数组映射到二维坐标:
下标 0: row = 0 / 2 = 0(偶数行), col = 0 % 2 = 0, 对应坐标 (0, 0),高度为 1。
下标 1: row = 0 / 2 = 0(偶数行), col = 1 % 2 = 1, 对应坐标 (0, 1),高度为 2。
数组未覆盖的位置(例如 row = 1 的所有列),高度均视为 0。
接下来计算各位置的表面积贡献。
对于坐标 (0, 0),高度 h = 1:
上下盖板面积为 4;
左侧无相邻位置,暴露面积为 1 × 1 = 1;
右侧相邻高度为 2,暴露面积为 1 × max(0, 1 - 2) = 0;
上侧无相邻位置,暴露面积为 2 × 1 = 2;
下侧无相邻位置,暴露面积为 2 × 1 = 2。
该位置表面积小计为 4 + 1 + 0 + 2 + 2 = 9。
对于坐标 (0, 1),高度 h = 2:
上下盖板面积为 4;
左侧相邻高度为 1,暴露面积为 1 × max(0, 2 - 1) = 1;
右侧无相邻位置,暴露面积为 1 × 2 = 2;
上侧无相邻位置,暴露面积为 2 × 2 = 4;
下侧无相邻位置,暴露面积为 2 × 2 = 4。
该位置表面积小计为 4 + 1 + 2 + 4 + 4 = 15。
将所有位置的贡献相加,得到总表面积为:
9 + 15 = 24
因此,输出结果为 24。
示例 2
输入示例
3 5 2 1 3 0 2
输出示例
56
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有