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

如何统计二维网格中指定坐标周围(含自身)的字母N的数量

实现count_n函数的修复方案

原代码问题梳理

  • 循环范围错误:仅遍历了给定坐标右下方的区域,没有覆盖坐标上下左右所有相邻的8个方向(含自身)
  • 变量名冲突:循环变量直接复用入参x/y,会覆盖原始输入的坐标值
  • 变量未初始化:计数变量n没有提前赋值为0,运行时会触发变量未定义报错
  • 取值逻辑错误:判断条件错误对比了循环变量x和字符串"N",实际需要取网格对应位置的元素判断

正确实现代码

def count_n(x, y, room):
    n = 0
    # 遍历坐标周围共9个可能的位置(含自身)
    for dy in range(y - 1, y + 2):
        for dx in range(x - 1, x + 2):
            # 边界校验:确保坐标不超出网格范围
            if 0 <= dy < len(room) and 0 <= dx < len(room[dy]):
                if room[dy][dx] == "N":
                    n += 1
    return n

# 测试用例:以坐标(2,2)为例,预期返回6
room = [['N', ' ', ' ', ' ', ' '],
        ['N', 'N', 'N', 'N', ' '],
        ['N', ' ', 'N', ' ', ' '],
        ['N', 'N', 'N', ' ', ' '],
        [' ', ' ', ' ', ' ', ' '],
        [' ', ' ', ' ', ' ', ' ']]  
print(count_n(2, 2, room))

逻辑说明

我们要统计的是给定坐标周围(横、纵坐标差绝对值≤1)的所有有效格子,因此循环范围设置为y-1到y+1、x-1到x+1,每次循环前先校验坐标是否在网格合法范围内,避免数组越界报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:54:03