有什么有效的动态编程算法可以最大程度地减少不移除两个相邻元素的阵列的总成本?

问题描述

我正在尝试设计一种有效的 动态编程 算法,该算法会给出长度为 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-th并转到下一个。当我们删除了k个元素或索引超出数组时,请停止。