在整数数组中提取模式

时间:2013-04-24 13:01:14

标签: algorithm language-agnostic pattern-matching

简而言之,我的问题是在整数数组中找到几个整数“模式”;结果应该相对于所提取的所有模式的总值是最佳的。

具体地说,数组的元素和模式是非负整数。我们说如果从该数组的某些连续元素(与模式长度相同)中减去模式,则数组中的所有元素都保持非负数时,可以从数组中提取模式。

由于元素是整数,因此每个模式可以被提取多次,这与字符串模式不同。例如,给定一个数组= {1,2,1}和一个模式= {1,1},我们可以在数组中找到两个这样的模式:第一个包含在数组{1的前两个项中, 2},并且从数组中提取一个模式后,数组变为{0,1,1},然后我们可以从数组的最后两个项中提取第二个{1,1}模式。

每个模式都有一个值;当一次提取一个模式时,该值也乘以i。目标是找到一系列模式提取,最终使总价值最大化。

我尝试使用贪婪算法,即首先提取具有最大单位值的模式,但仍然存在一个问题:如果数组中有多个最大值模式,哪个首先要选择?这里使用的贪婪策略让我想起了背包问题,但它们是不同的。此外,贪婪算法的最优性是可疑的。我在考虑动态编程算法但现在完全空白了。

希望我已经明确了问题。有什么建议?

0 个答案:

没有答案