0

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

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

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

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

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

希望我已经把问题说清楚了。有什么建议么? 

4

0 回答 0