【发布时间】:2018-06-11 00:55:21
【问题描述】:
问题链接如下:
https://www.geeksforgeeks.org/dynamic-programming-subset-sum-problem/
我没有看到至少在输入案例中的问题中实现了重叠子问题属性。
例如在下面的链接中,递归树没有任何重叠的子问题
http://www.zrzahid.com/subset-sum-problem-dynamic-programming/
此外,例如在以下程序中,没有重叠的子问题。当没有重叠的子问题时,我不明白动态编程在这里有什么帮助。请解释一下。
bool isSubsetSum(int set[],int n, int sum)
{
if(sum==0)
return true;
if(n==0 || sum<0)
return false;
return isSubsetSum(set,n-1,sum-set[n-1]) || isSubsetSum(set,n-1,sum);
}
int main()
{
int set[] = {3, 34, 4, 12, 5, 2};
int sum = 9;
int n = sizeof(set)/sizeof(set[0]);
if (isSubsetSum(set, n, sum) == true)
printf("Found a subset with given sum");
else
printf("No subset with given sum");
return 0;
}
【问题讨论】:
标签: c++ dynamic-programming subset-sum