我有这个循环数组,我需要以某种方式置换它,以便每个元素都改变了它的邻居。
示例:
1 2 3 4 5
变为
3 1 4 2 5
限制是阵列需要至少5个元素,否则不可能。
试图解决它很长一段时间,我确信它有一个名字,但我没有运气在网上找到答案。
答案 0 :(得分:1)
这实际上很容易解决,你只需要找到一些适用于数组中奇数和偶数元素的策略:
首先选择偶数位置的所有数字,然后选择奇数位置的第一个数字,然后是奇数位置的最后一个数字,最后是奇数位置的其余数字。
12345变为13524,因此适用于奇数元素。
123456变为135264,因此适用于偶数元素。
0123456789变为0246819357,另一个例子。
答案 1 :(得分:0)
我假设你知道选择 - 置换 - 非选择范式来解决这些问题。话虽如此,在选择你需要做的是你选择时确保你没有选择邻居,例如你当前的排列是1 2 3 4 5,即你当前的字符串是1,休息是2 3 4 5现在你必须从2 3 4 5中选择,但你当前的字符串有1,所以你不应该选择2.你应该选择3。等等。