【问题标题】:Dynamic Programming: max sum subsequence, consecutive numbers of different parity动态规划:最大和子序列,不同奇偶校验的连续数
【发布时间】:2014-04-04 02:50:54
【问题描述】:

希望创建一种动态规划算法,以确定具有最大和的序列(正整数)的子序列。唯一的规定是,如果子序列包含序列中的任何连续元素,则这两个数字的和为奇数(这两个数字的奇偶性不同)。

【问题讨论】:

  • 很酷的故事,你有什么问题?
  • 请创建a Minimal, Complete, and Verifiable example,并提供示例输入、输出和您收到的错误消息(如果有)。这将帮助我们确定正在发生的事情并提高您获得答案的机会。

标签: algorithm dynamic-programming


【解决方案1】:

首先根据奇偶性是否改变或保持不变将序列划分为子序列(连续元素)。例如考虑序列:1,2,3,4,6,8,4,2,9,6 ,3 比子序列是:

1)1,2,3

2)4,6,8,4,2

3)9,6,3

现在可以采用 1 和 3 的所有元素(即变化的奇偶性),因为它们对选择任何其他数字没有问题。

现在问题归结为从像 2) 这样的序列中选择不连续的元素并具有最大总和。假设 a1,a2..an 是现在的序列,假设 a1 和 a2 都不存在于最后的子序列中。但是我们可以通过取 a1 来增加总和,因为我们假设我们的子序列有最大总和。因此最终的子序列必须包含 a1 或 a2。

设 l(1,n) 表示序列 a1,a2..an 那么maxsum(l(1,n))=max(a1+maxsum(l(3,n)),a2+maxsum(l(4,n))) 其中 memoization 应用于 maxsum(l(x,n))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2015-06-29
    • 2019-12-09
    • 1970-01-01
    相关资源
    最近更新 更多