什么是一种有效的动态编程算法,可以最大限度地减少阵列的总成本,而无需移除两个相邻元素



我正在尝试设计一种高效的动态编程算法,该算法在给定长度n的整数数组和可移除的整数数量限制k时,将通过从数组中移除元素来最小化数组的总成本(即整数之和(,从而不会移除数组中的两个连续元素。我认为这基本上与最大化我删除的整数总量的成本相同,但我不完全确定。坦率地说,我完全拘泥于算法的递归步骤。

编辑:删除的元素数量可以小于或等于k的输入。

是的,你是对的,移除元素总和的最大化等于剩余元素的最小化。但解决方案本质上是一样的。

复发:

MaxDel(i, m) = Max(A[i] + MaxDel(i+2, m+1), MaxDel(i+1, m)) if (m < k and i < N) else 0

描述:我们可以删除第i个元素,在这种情况下,我们必须省略i+1并转到i+2,或者我们可以省略第i个并转到下一个。当我们删除了k个元素或索引超出数组时停止。

最新更新