简而言之,我的问题是在整数数组中找到几个整数“模式”;结果应该相对于所提取的所有模式的总值是最佳的。
具体地说,数组的元素和模式是非负整数。我们说如果从该数组的某些连续元素(与模式长度相同)中减去模式,则数组中的所有元素都保持非负数时,可以从数组中提取模式。
由于元素是整数,因此每个模式可以被提取多次,这与字符串模式不同。例如,给定一个数组= {1,2,1}和一个模式= {1,1},我们可以在数组中找到两个这样的模式:第一个包含在数组{1的前两个项中, 2},并且从数组中提取一个模式后,数组变为{0,1,1},然后我们可以从数组的最后两个项中提取第二个{1,1}模式。
每个模式都有一个值;当一次提取一个模式时,该值也乘以i。目标是找到一系列模式提取,最终使总价值最大化。
我尝试使用贪婪算法,即首先提取具有最大单位值的模式,但仍然存在一个问题:如果数组中有多个最大值模式,哪个首先要选择?这里使用的贪婪策略让我想起了背包问题,但它们是不同的。此外,贪婪算法的最优性是可疑的。我在考虑动态编程算法但现在完全空白了。
希望我已经明确了问题。有什么建议?