语言无关的问题,但我想知道是否有人可以逻辑地提供如何创建一个集合的指导,通过添加或减去可以生成1到N之间的任何数字。
答案 0 :(得分:0)
答案 1 :(得分:0)
一个想法。
如果我们仅使用求和,则由2小于或等于N的幂组成的集合将是这样的最小集合。通过减法,3的幂似乎是一个足以开始的想法。我怀疑它可能很小但没有证据。
我的理由如下。假设我们在集合中有k个数字。然后,通过求和和减法,我们可以得到最多3 ^ k个可能的结果。 (注意那些结果包含负整数。实际上,这样的一组结果相对于0是对称的。通常,我们将得到少于3 ^ k个不同的结果 - 其中一些将简单地重复)。
“最佳”选择的一个例子:
让第一个数字等于1.然后可能的结果是:-1,0,1。接下来,取3 - 然后我们将得到-4到4之间的所有整数。(选择数字2,而不是3,显然效率低下。)然后,为了获得下一个连续(和非重叠)整数序列,我们应该采用9.依此类推,直到达到数字N.
我们可以使用其他数字而不是3的幂。在这种情况下,我们应该处理将导致连续步骤的差距。我怀疑它会产生一个元素更少的集合。 (不过我可能错了。)