这种递归关系是否适用于子集求和问题?
声明:打印是或否取决于是否存在给定数组 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
试着看看我是否有正确的复发关系。谢谢指导。
答案 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/。