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

开发5×5网格中心径向扩展算法(expandOutwards函数)

实现5×5网格中心径向扩展的expandOutwards(int n)函数

问题概述

需要编写一个expandOutwards(n)函数,输入迭代次数n,对固定5×5网格执行从中心开始的径向扩展。网格状态变化完全匹配以下规则:

  • 初始状态(n=0):仅中心为x,其余为.

. . . . .
. . . . .
. . x . .
. . . . .
. . . . .

  • 迭代1后(n=1):中心及上下左右相邻单元变为x

. . . . .
. . x . .
. x x x .
. . x . .
. . . . .

  • 迭代2后(n=2):扩展至距离中心曼哈顿距离≤2的所有单元

. . x . .
. x x x .
x x x x x
. x x x .
. . x . .

  • 迭代3后(n=3):扩展至距离中心曼哈顿距离≤3的所有单元

. x x x .
x x x x x
x x x x x
x x x x x
. x x x .

  • 迭代4后(n=4):整个网格全为x

解决方案思路

5×5网格的中心坐标是(2,2)(行、列索引从0开始)。每个单元到中心的曼哈顿距离(abs(i-2) + abs(j-2))决定了它在第n次迭代后是否变为x:

  • 若距离≤n,则设为x;
  • 当n≥4时,所有单元的最大曼哈顿距离是4,直接全设为x;
  • 若n<0,按初始状态(n=0)处理,避免非法输入导致异常。

Python代码实现

def expandOutwards(n):
    # 初始化5x5网格,默认填充'.'
    grid = [['.' for _ in range(5)] for _ in range(5)]
    center = (2, 2)
    
    # 处理边界情况:n≥4时直接填满x;n<0时按n=0处理
    if n >= 4:
        for i in range(5):
            grid[i] = ['x'] * 5
    else:
        valid_n = max(n, 0)
        for i in range(5):
            for j in range(5):
                distance = abs(i - center[0]) + abs(j - center[1])
                if distance <= valid_n:
                    grid[i][j] = 'x'
    
    # 打印网格并返回结构
    for row in grid:
        print(' '.join(row))
    return grid

结果验证

直接调用函数即可得到对应迭代状态:

  • expandOutwards(0) → 初始状态
  • expandOutwards(1) → 迭代1后的状态
  • expandOutwards(2) → 迭代2后的状态
  • expandOutwards(3) → 迭代3后的状态
  • expandOutwards(4) → 全x网格

代码逻辑完全匹配题目给出的示例,同时处理了非法输入的情况,保证鲁棒性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:31:19