我正在寻找一个高效的解决方案来解决特定的整数因子分解问题。这里的“高效”是指比当前的
假设我们有以下数组:
我们想要找出是否有可能满足
给定以下限制条件:
0 <= a <= 3
0 <= b <= 2
0 <= c <= 1
如果我们没有找到解决方案,则向数组添加一个整数,比如15:
给定以下限制条件:
0 <= a <= 4
0 <= b <= 3
0 <= c <= 2
0 <= d <= 1
...然后我们重复这个过程,直到找到一个解决方案,或达到n次。我想知道是否可以利用问题的重复性质来找到一个高效的解决方案:
目标不会改变
整数按升序排列
a、b、c…的最大约束每次增加1个
每重复一次都会向公式添加一些内容,但除了约束条件外什么都没有改变。
有什么想法吗?
O(2^n)
要快很多(其中n表示我们完成后数组中元素的数量)。假设我们有以下数组:
[4, 5, 11]
,并且一个“目标”值为84。我们想要找出是否有可能满足
4*a + 5*b + 11*c = 84
,给定以下限制条件:
0 <= a <= 3
0 <= b <= 2
0 <= c <= 1
如果我们没有找到解决方案,则向数组添加一个整数,比如15:
[4, 5, 11, 15]
现在我们想知道是否有任何满足 4*a + 5*b + 11*c + 15*d = 84
的东西给定以下限制条件:
0 <= a <= 4
0 <= b <= 3
0 <= c <= 2
0 <= d <= 1
...然后我们重复这个过程,直到找到一个解决方案,或达到n次。我想知道是否可以利用问题的重复性质来找到一个高效的解决方案:
目标不会改变
整数按升序排列
a、b、c…的最大约束每次增加1个
每重复一次都会向公式添加一些内容,但除了约束条件外什么都没有改变。
有什么想法吗?