You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python矩阵填充代码实现指定块填充?验证逻辑正确性

矩阵方块填充问题的代码修正与逻辑验证

问题背景

给定一个n*m的全0矩阵,要求使用指定大小的方块填充空白区域,方块需保持完整形状、不与已有内容重叠。例如放入2*2的方块后,矩阵应变为:

[[1,1,0,0],
 [1,1,0,0],
 [0,0,0,0],
 [0,0,0,0]]

若矩阵无可用空间容纳方块,返回-1。

现有代码问题

现有代码按行优先顺序逐个填充方块元素,导致方块形状被破坏:

  • 当前输出:[[1, 1, 1], [1, 0, 0], [0, 0, 0], [0, 0, 0]]
  • 预期输出:[[1, 1, 0], [1, 1, 0], [0, 0, 0], [0, 0, 0]]

原代码的核心问题是没有保持方块的二维结构,只是将方块元素按一维队列顺序填充矩阵的空白位置,无法满足"完整方块填充"的要求。

代码修正方案

修改后的函数需要先找到矩阵中能完整容纳方块的空白区域,再按方块的二维结构填充:

def solution(matrix, block):
    m = len(matrix)
    n = len(matrix[0]) if m > 0 else 0
    bm = len(block)
    bn = len(block[0]) if bm > 0 else 0

    # 先判断方块尺寸是否超出矩阵范围
    if bm > m or bn > n:
        return -1

    # 遍历所有可能的方块左上角起点
    for start_row in range(m - bm + 1):
        for start_col in range(n - bn + 1):
            # 检查目标区域是否全为空白
            is_valid = True
            for r in range(bm):
                for c in range(bn):
                    if matrix[start_row + r][start_col + c] != 0:
                        is_valid = False
                        break
                if not is_valid:
                    break
            if is_valid:
                # 按方块形状填充目标区域
                for r in range(bm):
                    for c in range(bn):
                        matrix[start_row + r][start_col + c] = block[r][c]
                return matrix

    # 无可用空间容纳方块
    return -1

修正逻辑说明

  1. 先校验方块尺寸是否超过矩阵,若超出直接返回-1
  2. 遍历矩阵中所有可能的方块左上角坐标(确保方块不会超出矩阵边界)
  3. 检查每个候选区域是否全为空白,找到第一个有效区域后,按方块的二维结构填充对应位置
  4. 若遍历完所有位置都没有有效区域,返回-1

给定填充逻辑的正确性判断

用户提供的这段填充逻辑完全错误,问题如下:

for i,row in enumerate(block):
    for j,val in enumerate(row):
        while i<m and j<n:
            if matrix[i][j] == 0:
                if d:
                    matrix[i][j] = d.popleft()
                else:
                    break
        i += 1
        j += 1
  • 外层循环的i、j是方块的索引,修改i +=1、j +=1会破坏外层循环的遍历逻辑
  • while循环内部没有递增i或j,只会执行一次,逻辑无意义
  • 填充位置是(i,j)、(i+1,j+1)等对角线位置,完全无法保持方块的矩形形状
  • 没有检查目标区域是否能完整容纳方块,无法保证填充的连续性和正确性

内容的提问来源于stack exchange,提问作者meallhour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:10:22