奇数阶n×n矩阵中心起始螺旋填充图案模拟实现问题
奇数n阶矩阵螺旋图案填充实现
需求说明
- 输入:用户指定的奇数n,用于生成n×n的矩阵
- 填充规则:
- 从矩阵中心位置开始填充,中心元素赋值为0
- 奇数步:按向右、向上的顺序移动对应长度单位填充
- 偶数步:按向左、向下的顺序移动对应长度单位填充
- 重复上述奇偶步模式共n-1次,完成整个矩阵的填充
效果示例
n=7时的填充效果如下:
6 6 6 6 6 6 5 6 4 4 4 4 3 5 6 4 2 2 1 3 5 6 4 2 0 1 3 5 6 4 2 3 3 3 5 6 4 5 5 5 5 5 6 7 7 7 7 7 7
参考实现(Python)
def generate_spiral_matrix(n): if n % 2 == 0: raise ValueError("n必须为奇数") # 初始化n×n矩阵 matrix = [[0]*n for _ in range(n)] # 中心坐标 x, y = n//2, n//2 current_val = 0 matrix[x][y] = current_val step_len = 1 for step in range(1, n): current_val += 1 if step % 2 == 1: # 奇数步:右走step_len,上走step_len for _ in range(step_len): y += 1 matrix[x][y] = current_val for _ in range(step_len): x -= 1 matrix[x][y] = current_val else: # 偶数步:左走step_len,下走step_len for _ in range(step_len): y -= 1 matrix[x][y] = current_val for _ in range(step_len): x += 1 matrix[x][y] = current_val if step % 2 == 0: step_len += 1 # 补全最外层右侧剩余区域 current_val += 1 for _ in range(step_len): y += 1 matrix[x][y] = current_val return matrix # 测试输出 n = int(input("请输入奇数n:")) matrix = generate_spiral_matrix(n) for row in matrix: print(' '.join(map(str, row)) + ' ')
内容的提问来源于stack exchange,提问作者shahab javanmardi
相关产品推荐
相关产品推荐

