从一个整数数组开始,使其值的总和为正整数S
。以下例程始终以相同数量的步骤和相同结果终止。为什么?
从数组x = [x_0,x_1,...,x_N-1]
开始,使所有x_i
都是整数。只要有负条目,就执行以下操作:
选择任何索引
i
,使得x_i < 0
。将
x_i
(负数)添加到x_(i-1%N)
中。将
x_i
(负数)添加到x_(i + 1%N)
中。用
-x_i
(正数)替换x_i
。
此过程保持x_0 + x_1 + ... + x_N-1 = S
的特性。对于任何给定的起始数组x
,无论在任何步骤中选择哪个索引,经过这些步骤的次数与生成的向量相同。甚至我自己都不清楚(至少对我来说)这个过程是否会有限时间终止,更不用说具有这个好的不变特性。
例子:
取x = [4,-1,-2]
并翻转x_1
开始,结果为
[4, -1, -2]
[3, 1, -3]
[0, -2, 3]
[-2, 2, 1]
[2, 0, -1]
[1, -1, 1]
[0, 1, 0]
另一方面,将x_2
翻转以开始执行:
[4, -1, -2]
[2, -3, 2]
[-1, 3, -1]
[1, 2, -2]
[-1, 0, 2]
[1, -1, 1]
[0, 1, 0]
并且,如果您选择在第三个数组中翻转
x_2
而不是x_0
,则用从第三个数组开始反转的数组给出此解决方案的最终方法。 在所有情况下,6步导致[0,1,0]
。我有一个论点证明这是正确的,但对我来说似乎过于复杂(它与Coxeter groups有关)。 有人有更直接的思考方式吗? 即使找到一个理由表明这应该终止也很好。
对于给定数组确定步骤数的任何人都将获得额外积分(无需经过过程)。
[2,1,-2]
,将x_2翻转得到[2,-2,1]
,因此无论如何该过程尚未结束。 - PengOne