华为 · 模拟 · 算法编程题
华为 模拟 时限 1 秒 / 256 MB

题目描述

在图像任务中,卷积层要对多通道输入做滑窗加权求和。现在请你实现“多通道、单输出通道”的二维卷积:同一位置上,各输入通道卷积结果累加得到输出值,不做激活与归一化。
·
输入张量形状:(C, H_in, W_in),共 C 个通道,每个通道是H_in × W_in的二维数组。
·
卷积核形状:(C, K_h, K_w),每个通道配一张K_h × K_w的核,通道数与输入相同。
·
步长与填充:步长为stride(整数 ≥ 1),四周以 0 填充padding层。
·
计算方式:
1) 先在输入四周补 0,得到尺寸(C, H_in + 2*padding, W_in + 2*padding)。
2) 以步长stride滑动大小为K_h × K_w的窗口;若窗口越界(不足以覆盖核),该位置跳过。
3) 对每个窗口:逐通道与对应核做逐元素相乘并求和,再把各通道和相加,得到该格的输出值。
·
输出张量形状为(H_out, W_out),其中
H_out = (H_in + 2*padding - K_h) // stride + 1
W_out = (W_in + 2*padding - K_w) // stride + 1
·
所有输入与输出均为整数。

输入输出

输入描述
· 第1行:C H_in W_in
· 接下来C * H_in行:按“通道 1 的 H_in 行,再通道 2 的 H_in 行,…”的顺序,每行含W_in个整数
· 下一行:C K_h K_w(C 必与第一行一致)
· 接下来C * K_h行:按通道顺序,每个通道给出K_h行、每行K_w个整数
· 最后一行:stride padding
输出描述
· 输出H_out行、每行W_out个整数,空格分隔

样例共 1 组

样例 1 · · 形状计算:H_out=(3+2*0-2)//1+1=2,W_out 同理为 2,输出为 2×2。 · 位置(0,0)窗口=[[1,2],[4,5]],与核[[1,0],[0,1]]逐元素相乘并求和:11+20+40+51=6。 · 位置(0,1)窗口=[[2,3],[5,6]] → 21+30+50+61=8。 · 位置(1,0)窗口=[[4,5],[7,8]] → 41+50+70+81=12。 · 位置(1,1)窗口=[[5,6],[8,9]] → 51+60+80+91=14。
输入
1 3 3
1 2 3
4 5 6
7 8 9
1 2 2
1 0
0 1
1 0
输出
6 8
12 14

算法解析依据充分

考点:模拟

限制 1 秒 / 256MB | 标准输入输出

题目画像

  • 源站时限:1 秒(牛客口径,非本题专属门槛)

解题思路

推荐方向:模拟

本题切入点

多通道单输出卷积:先补 padding,再以 stride 滑窗,把各通道与对应核的乘积和相加得到该格输出,越界窗口跳过。

不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。

思路框架(模拟 通法 · 非本题专属)

  1. 用变量记录题目要求的「状态」(当前值、剩余数量、当前位置等)。
  2. 按题面给出的顺序,把每一步操作写成一段代码,逐条执行。
  3. 每一步执行后更新状态,并在题目要求的位置输出或累计答案。
  4. 注意循环的边界:执行多少次、何时终止、是否能终止。

实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。

复杂度:时间 O(操作次数) | 空间 O(状态数)

该范式的通法易错点

  • 终止条件写错导致死循环或漏做最后一次操作。
  • 状态更新顺序颠倒(先改了下标又用旧下标)。
  • 题目里「最多 / 恰好 / 至少」的语义差别没区分。

样例解读

样例 1:输入 1 3 3 / 1 2 3 / 4 5 6 / 7 8 9 / 1 2 2 / 1 0 / 0 1 / 1 0 → 输出 6 8 / 12 14

· 形状计算:H_out=(3+2*0-2)//1+1=2,W_out 同理为 2,输出为 2×2。

· 位置(0,0)窗口=[[1,2],[4,5]],与核[[1,0],[0,1]]逐元素相乘并求和:11+20+40+51=6。

· 位置(0,1)窗口=[[2,3],[5,6]] → 21+30+50+61=8。

· 位置(1,0)窗口=[[4,5],[7,8]] → 41+50+70+81=12。

· 位置(1,1)窗口=[[5,6],[8,9]] → 51+60+80+91=14。

解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。

本题来源:2025年秋招-华为-11月06号留学生AI岗。

‹ 上一题 全部编程题 下一题 ›
编程算法题为只读内容:无需作答,直接看题与解析 · 本站不提供在线判题 · 解析由校招宝本地引擎整理,非官方题解