如果需要把数组恰好分成k个子段,那么在动态规划中只需要加上第二个参数——分成多少段。 即,现在我们将考虑以下 dp: dp[i][j] 是前 i 个元素的答案,如果我们将它们分成恰好 j 个部分。 注意无效状态。 动力学的重新计算是相同的,但考虑了第二个参数。即统计dp[i][k]并通过最后一个子段j的左边界进行排序,我们通过dp[j - 1][k - 1]和段的值重新计算dp[i][k] [j;i]。
1000 ms 256 Mb Rules for program design and list of errors in automatic problem checking