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

奇数阶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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:12:04