我的递归关系是否适合子集总和?

Is my recurrence relation right for subset sum?

这个递归关系对于子集和问题是否正确?
语句:打印 Yes 或 No 取决于给定数组 a[ ] 的子集是否总和为给定数字 n.

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

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

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

只是想看看我是否有正确的递归关系或not.Thanks指导。

你几乎是正确的(不确定你为什么使用 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/.