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

如何检查二维0-1列表中无1接触边界?代码返回结果异常排查

问题分析与修复

原代码的核心逻辑完全错误:

  • 仅检查了第一列和硬编码的第五行(pool[4][l]),没覆盖所有边界(第一行、最后一列)
  • 循环第一次迭代就触发elif条件直接返回"legitimate",根本没完成所有边界的检查

比如第一次循环r=0、l=0时,pool[0][0]是0,直接进入elif返回合法,完全忽略了第三行第一列的1这类边界违规情况。

修复后的代码

pool = [[0, 0, 0, 0, 0],
        [0, 1, 1, 1, 0],
        [1, 1, 1, 0, 0],
        [0, 1, 0, 0, 0],
        [0, 1, 0, 0, 0]]

def is_legitimate_pool(pool):
    rows = len(pool)
    if rows == 0:
        return "legitimate"
    cols = len(pool[0])
    
    # 检查第一行和最后一行的所有元素
    for col in range(cols):
        if pool[0][col] == 1 or pool[-1][col] == 1:
            return "illegitimate"
    
    # 检查第一列和最后一列的中间行(跳过已检查的首尾行)
    for row in range(1, rows-1):
        if pool[row][0] == 1 or pool[row][-1] == 1:
            return "illegitimate"
    
    # 所有边界无1则合法
    return "legitimate"

print(is_legitimate_pool(pool))  # 输出: illegitimate

修复说明

  • 用总行数、总列数替代硬编码索引,让函数适配任意大小的二维列表
  • 分两部分覆盖所有边界:第一行/最后一行的全部列,以及第一列/最后一列的中间行
  • 只要发现边界存在1就立即返回非法,遍历完所有边界无问题才返回合法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:25:27