欢迎光临
我们一直在努力

螺旋矩阵:给定矩阵的阶数n,输出一个螺旋式的数字矩阵。

def gen(n):
    """
    生成一个n阶的螺旋矩阵。

    参数:
    n -- 矩阵的阶数

    返回:
    一个二维列表,表示生成的螺旋矩阵。
    """
    # 初始化一个n*n的全0矩阵
    matrix = [[0] * n for _ in range(n)]
    # 初始化行、列索引和数字序号以及方向
    row, col = 0, 0
    num, direction = 1, 0
    # 循环填充数字直到填满整个矩阵
    while num <= n ** 2:
        # 如果当前位置为空,则填充数字并递增
        if matrix[row][col] == 0:
            matrix[row][col] = num
            num += 1
        # 根据当前方向决定下一步行动
        if direction == 0:
            # 向右移动,如果遇到边界或已填充位置,则改变方向
            if col < n - 1 and matrix[row][col + 1] == 0:
                col += 1
            else:
                direction += 1
        elif direction == 1:
            # 向下移动,如果遇到边界或已填充位置,则改变方向
            if row < n - 1 and matrix[row + 1][col] == 0:
                row += 1
            else:
                direction += 1
        elif direction == 2:
            # 向左移动,如果遇到边界或已填充位置,则改变方向
            if col > 0 and matrix[row][col - 1] == 0:
                col -= 1
            else:
                direction += 1
        elif direction == 3:
            # 向上移动,如果遇到边界或已填充位置,则改变方向
            if row > 0 and matrix[row - 1][col] == 0:
                row -= 1
            else:
                direction += 1
        # 确保方向值在0-3之间循环
        direction %= 4
    return matrix

def show(matrix):
    """
    展示一个二维列表(矩阵)。

    参数:
    matrix -- 一个二维列表

    返回:
    无返回值,直接打印矩阵的每行元素。
    """
    # 遍历矩阵,打印每行元素
    for item in matrix:
        for num in item:
            print(num, end="\t")
        print()

def show_spiral_matrix(n):
    """
    展示一个n阶的螺旋矩阵。

    参数:
    n -- 矩阵的阶数

    返回:
    无返回值,直接打印螺旋矩阵。
    """
    # 生成n阶螺旋矩阵并展示
    matrix = gen(n)
    show(matrix)

# 调用函数展示一个6阶的螺旋矩阵
show_spiral_matrix(6)
赞(0) 打赏
未经允许不得转载:创想未来 » 螺旋矩阵:给定矩阵的阶数n,输出一个螺旋式的数字矩阵。

评论 抢沙发

评论前必须登录!

 

更好的Python学习

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册