我一直在尝试用PHP构建一个算法,它在某些方面类似于子集和问题,但在这种情况下,我不是在寻找完全匹配,只是最接近的匹配,就像在大多数情况下那样不太可能完全匹配。
让我详细说明一下。假设我拥有各种假设投资,需要从现有投资中筹集总和X.假设X = 40000。
输入数组为(4500,8750,12900),每个输入的数量为(8,10,10)。
现在,我可以直观地计算出4500 * 8 = 36000,12900 * 3 = 38700,但更接近的匹配将是(4500 * 6)+ 12900 = 39900。
我很快发现尝试循环遍历每个可能的组合会快速创建数百万个可能的数组,如果添加额外的输入则更多。如果它只是出于我自己的目的,那不会成为问题,但对于网络应用程序来说不可行。
我不是要求任何人为我编写代码。我不是数学家,所以我只是想知道是否有一种不同的方法可以解决这个问题,或者它是最不捷径的部分呢?
感谢。
答案 0 :(得分:0)
这是一个众所周知的问题,称为“背包问题”,可以通过动态编程方法解决。