【发布时间】:2015-08-29 16:43:19
【问题描述】:
在我的算法课程中,书中有一个问题如下:“给定一个由正数组成的数组 a[1..n] 和一个整数 k。你必须产生一个数组 b[1. .n],使得:对于每个 j,b[j] 要么为 1,要么为 0。数组 b 最多有 K 次相邻的 1。Sum(a[j]*b[j]) for 1
解决方案使用动态规划,在与一些朋友讨论时,他们说递归关系的形式为 M(i, j) = max(M(i-2, j) + a[i], M(i- 1, j-1) + a[i])
有人可以解释为什么会这样吗?或者他们是否有解决此类问题的不同形式。我发现动态编程有点难以掌握。 谢谢你。
【问题讨论】:
标签: arrays algorithm dynamic dynamic-programming