python平方矩阵 数学最小值解法【简单易懂,代码可以直接运行】

本文介绍了一种使用数学方法解决回环矩阵问题的方案。通过计算矩阵中每个元素到四个边缘的距离并取最小值,可以生成一个从外向内递增的矩阵。此方法巧妙地避免了复杂的循环和条件判断。

python平方矩阵 数学最小值解法【简单易懂,代码可以直接运行】

首先先解释一些什么是回环矩阵:
在这里插入图片描述
如图所示即是回环矩阵,也是这篇文章里面这道题的解法

输入整数 N,输出一个 N 阶的回字形二维数组。
数组的最外层为 1,次外层为 2,以此类推。
输入格式
输入包含多行,每行包含一个整数 N。
当输入行为 N=0 时,表示输入结束,且该行无需作任何处理。
输出格式
对于每个输入整数 N,输出一个满足要求的 N 阶二维数组。
每个数组占 N 行,每行包含 N 个用空格隔开的整数。
每个数组输出完毕后,输出一个空行。
数据范围
0≤N≤100

对于这道题,如果单纯的用循环来做的话,我觉得是很难找到循环中矩阵中各个值该如何变化,我想用循环赋值,然后利用交换矩阵的行和列的值,来完成i,j处元素关于对角线对称位置元素的值,不过自己用循环想了一个中午也没想出来正确的解法,输出的矩阵中总有几个值不符合输出的要求。
下面介绍一种数学方法来解决这个问题,利用最小值。回环矩阵其实是矩阵中每一层元素到达矩阵边缘的最小值,以M[i][j]为例:

边缘距离
上边缘i
下边缘N-i+1
左边缘j
右边缘N-i+1

然后利用min函数找出四者中的最小值,然后输出即可啦
点个👍吧,秋梨膏
代码如下:

#平方矩阵输入的值最外层是1,第二层是2,第三层是3以此类推
#实质上是找每一层的元素到每一条边的最小值
N = eval(input())
while N != 0:
    for i in range(1,N + 1):
        for j in range(1,N + 1):
            up = i
            down = N - i + 1
            left = j
            right = N - j +1
            print(min(min(up,down),min(left,right)),end=' ')
        print()
    print()
    N = eval(input())

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

henu-于笨笨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值