【发布时间】:2018-01-24 06:41:10
【问题描述】:
在单个数组 (x) 中交换元素是计算机科学中的经典问题。在像 C 这样的低级语言中,直接(但绝不仅仅是,例如 XOR)解决方案是使用临时变量:
x[0] = tmp
x[0] = x[1]
x[1] = tmp
上述算法交换了 x 的第一个和第二个元素。
在两个子数组 x 和 y 之间交换元素是类似的
x[0] = tmp
x[0] = y[1]
y[1] = tmp
对于 3 个数组的情况,如果添加了数组 1 的元素必须与数组 2 的元素交换并且数组 2 的元素必须与数组 3 的元素交换的附加限制,那该怎么办?数组 1 和 3 中的元素不会相互交换。
如何将这种方法(加上限制)推广到 k 个数组?
【问题讨论】:
-
我在 R 中工作,但在我的示例中,索引从 0 开始(而不是像在 R 中那样为 1)
-
这让我们想起了Tower of Hanoi 问题,请参阅链接中的 Frame–Stewart 算法以获得通用方法。