gpt4 book ai didi

algorithm - 矩阵转置 : How this code is transposing matrix

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

我试图理解下面的代码,它在第 x 列上转置矩阵

int transpose(int* a, int row, int col)
{
for(int i = 0; i < row*col; i++)
{
int old = i;
do
{
old = (old%row)*col + old/row;
}
while(old < i)
swap(a[i],a[old])
}
}

这一行 (old = (old%row)*col + old/row) 在做什么?

最佳答案

矩阵存储在大小为row*col 的一维数组中。数组索引为 i=r*col+c,假设 c 是当前列,r 是当前行。要从索引计算行,使用整数除法r=i/col,要得到列索引,使用余数c=i%col

在引用行中,old 是数组索引。该语句计算转置元素的新索引,因为除法和余数不是使用 col 计算的,而是使用 row 计算的。

do while 循环防止元素被交换两次。但是我觉得很难理解,我相信应该有更好的方法来做到这一点。

关于algorithm - 矩阵转置 : How this code is transposing matrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37936920/

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