我的递归关系是否适用于子集和?

时间:2015-02-22 22:45:14

标签: dynamic-programming recurrence subset-sum

这种递归关系是否适用于子集求和问题?
声明:打印是或否取决于是否存在给定数组 a [] 的子集,其总和为 n

dp [i] [j] = true,如果0到 j 数组中的元素总和为 i ,否则为false。 / p>

dp [i] [j] = min(dp [i-a [j]] [j],dp [i] [j-1])

基本案例值:
dp [0] [0] = true
dp [1 ... i] [0] = false

试着看看我是否有正确的复发关系。谢谢指导。

1 个答案:

答案 0 :(得分:0)

你几乎是正确的(不知道为什么你用min)。但是让 dp [i] [j] 存储 arr [0],arr [1],.... arr [j] 的子集的答案(这里 arr [] 是元素数组)可以总结为 i 。 那是 dp [i] [j] 如果答案为是则为1,如果答案为否则为0。忽略基本情况,递归关系是 dp [i] [j] =(dp [i] [j-1] | dp [i-arr [j]] [j-1]) 。要获得确切的代码和基本案例以及实现,您可以在此处查看:http://www.geeksforgeeks.org/dynamic-programming-subset-sum-problem/