这是从给定集合和目标值中获取真假的解决方案之一
bool subsetSumExists(Set<int> & set, int target) {
if (set.isEmpty()) {
return target == 0;
} else {
int element = set.first();
Set<int> rest = set - element;
return subsetSumExists(rest, target)
|| (subsetSumExists(rest, target- element));
}
}
但是,此解决方案将仅返回 true 或 false 值。怎么可能得到涉及子集的元素(加在一起的集合等于目标)?
我必须使用动态编程吗?因为我知道..递归实际上是在建立堆栈,在函数返回值之后,框架内的值也将被丢弃。
那么,是否有可能获得加起来等于目标值的元素。
传递对象是问题的解决方案吗?
谢谢