gpt4 book ai didi

algorithm - 从它的索引计算矩阵单元值

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:56:35 27 4
gpt4 key购买 nike

如果我想用以下格式的数字填充矩阵(注意 [1-25] 中的数字序列)

1 | 3 | 6 | 10 | 15
2 | 5 | 9 | 14 | 19
4 | 8 | 13| 18 | 22
7 | 12| 17| 21 | 24
11| 16| 20| 23 | 25

我的问题是:有没有什么方法可以根据它的索引计算单元格值,而无需遍历所有矩阵单元格到目标单元格?

ex : 给定 i=2 , j=2 (从 i & j => 13 计算单元格值)

为什么我需要这个?在我的例子中,我有大尺寸的大矩阵,上面的示例仅用于演示目的。

最佳答案

你必须记住 1 + 2 + 3 + ... + N = N*(N+1)/2。这是 Python 中的一个解决方案(我很确定我已经回答了那个问题,但我找不到它):

def diag(i, j, N):
if i+j < N:
return (i+j)*(i+j+1)/2 + i + 1
else:
return N*N - diag(N-i-1, N-j-1, N) + 1

然后:

>>> [[diag(i,j, N) for i in range(N)] for j in range(N)]
[[1, 3, 6, 10, 15],
[2, 5, 9, 14, 19],
[4, 8, 13, 18, 22],
[7, 12, 17, 21, 24],
[11, 16, 20, 23, 25]]

一些解释,

  1. 坐标i,j的细胞位于对角线i+j上

  2. 如果i+j < N,则单元格在上半部分

  3. 因此根据备注,对角线的第一项是(i+j)*(i+j+1)/2 + 1

  4. 因此上半电池的公式

  5. 对于下半电池,我只是使坐标对称。

关于algorithm - 从它的索引计算矩阵单元值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42459087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com