我有一个由元素组成的数组
显然,我可以尝试所有可能的排列并选择使总和最小的一个(这将在O(n!)中给出正确的结果)。
我试图将总和改写为
现在当我看最后一个等式时,我发现我看到了最优子结构
[(A1,B1),...(An,Bn)]
(均为正浮点数,Bi <= 1),我需要找到一种排列方式,使得总和最小A1 + B1 * A2 + B1 * B2 * A3 + ... + B1 * ... B(n-1) * An
。显然,我可以尝试所有可能的排列并选择使总和最小的一个(这将在O(n!)中给出正确的结果)。
我试图将总和改写为
A1 + B1 * (A2 + B2 * (A3 + B3 * (... + B(n-1) * An)))
,并尝试使用贪心算法,每一步都取最大的Ai元素(但这并不能产生正确的结果)。现在当我看最后一个等式时,我发现我看到了最优子结构
A(n - 1) + B(n - 1) * An
,因此我必须使用动态规划,但我无法确定正确的方向。 有什么想法吗?