0

我现在正在尝试一天来寻找一种算法来交换对称矩阵中的两个索引,以便结果也是一个对称矩阵。

假设我有以下矩阵:

0 1 2 3
1 0 4 5
2 4 0 6
3 5 6 0

假设我想交换第 1 行和第 3 行(其中第 0 行是第一行)。只需交换结果:

0 1 2 3
3 5 6 0
2 4 0 6
1 0 4 5

但是这个矩阵不再是对称的。我真正想要的是以下矩阵:

0 3 2 1
3 0 6 5
2 6 0 4
1 5 4 0

但我找不到合适的算法。这真的让我很兴奋,因为它看起来很容易。

有人知道吗?

更新

系统发育学给出了一个非常简单的答案,我觉得我自己想不到它很傻。但这里有一个后续任务:

假设我将此矩阵存储为二维数组。为了节省内存,我不保存冗余值,并且我还省略了始终具有0值的对角线。我的数组看起来像这样:

[ [1, 2, 3], [4, 5], [6] ]

我的目标是将该数组转换为:

[ [3, 2, 1], [6, 5], [4] ]

如何使用给定的数组以有效的方式交换行和列?

4

1 回答 1

4

很简单!

正如您目前所做的那样,将第 1 行与第 3 行交换。然后将第 1 列与第 3 列交换。

于 2013-08-01T14:55:48.380 回答