我在 topcoder 上做了一个问题,我遇到了一个 DP 问题(http://goo.gl/hjeaS)
这应该有一个有效的 dp 解决方案,但我被卡住了。我拿了一个数组 res[i][j][k] 来存储子问题,但我无法弄清楚执行情况,尤其是更精细的细节。
r[i][j][k] 将存储最小编号。在 i 和 j 之间插入加号,得到和 k。所以,我遍历 i,j & k,在 i & j 之间的每个位置插入一个加号。在遍历所有元素 i 到 j(对于特定的总和,k)后,将获得最小值。不过,我不确定数组的初始值以及限制应该是什么。有没有更有效的解决方案?(我的似乎是 O(n³k))
PS我知道还有另一个类似的问题,但没有一个答案真正解释了该问题的 dp 解决方案背后的逻辑/代码。