开发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
相关产品推荐
相关产品推荐

