在我正在做的一个程序中,我有一个名为a = [5, 6, 7]的向量,我必须使用这个列表中的整数将integer61拆分成加法分区。一个例子就是

61 = 5 + 6 + 7 + 7 + 6 + 6 + 6 + 6 + 6 + 6

有很多方法可以分开这个。我必须用编程的方法。我发现一种方法如下我不知道这是否总是会有结果首先我检查61是否可以被列表中的任何数字整除如果是的话,那么我可以用这个数字加很多次(即商)得到61在这种情况下,61是一个素数。所以这将失败。下一步是
把列表中的第一个数字(在我们的例子中是5)从61中减去,看看答案是否可以被列表中的任何成员整除。如果是的话,那么我们又找到了一种做加法的方法。在这种情况下,从61中减去5得到56,它可以被7整除,我们的解是
61 = 5 + 7 + 7 + 7 + 7 + 7 + 7 + 7 + 7

以这种方式,我们继续向下列表,直到我们找到一些减法后的答案,可以被列表中的一个成员整除。
现在给我的列表,[5, 6, 7]是这样的,存在一个整数分区,这样我们就可以从使用该整数分区的添加中得到61。因此,我们不必担心是否存在解决方案。所以我的方法看起来很粗糙。我想知道有没有一种有效的方法来做这件事
使用组合数学中的一些算法。所以我的最终答案应该是
整数分区中的数字。所以一个可能的答案是
[5, 6, 7, 7, 6, 6, 6, 6, 6, 6]

谢谢

最佳答案

61的根是7
接近61的7的倍数为8,减去61-7*8=56,
同样地,接近61的6的倍数为9,间隙为7,
减去61-6*9=得到54,则{5,7}中剩余的2%的结果应为零
得到中间和,并找到它们的一般根结合位移可以给出答案。
希望这有帮助。!!乐于助人

10-07 22:33