【问题标题】:java- finding a subset sum using recursionjava-使用递归查找子集和
【发布时间】:2013-02-07 02:22:11
【问题描述】:
程序的目标是查看数组中的一个输入是否可以是其他输入的任意组合的总和。我了解它背后的理论,并想出了如何解决它,但我不确定如何实现它。我决定将数组从最小到最大排序,然后我想我会先将数字对与以下输入进行比较,然后使用 3 个输入,然后是 4 个等,但我不知道如何使用递归来解决这个问题。一些方向会非常有帮助,而不是寻找完整的答案谢谢!
【问题讨论】:
标签:
java
recursion
subset
【解决方案1】:
让我看看..
你需要一个目标总和,所以这是争论之一。
到目前为止,您需要一个总和,所以这是另一个。
Boolean IsSubsetSum(int[] sorted array, int Target,int maxIndex , int SumSoFar = 0);
这听起来是个不错的起点。
如果 SumSoFar == 目标
返回真
如果 maxIndex == 0 则否则
返回错误
否则
将 array[maxIndex] 添加到总和并使用适当的参数递归调用..
这一步将循环超过 0..maxIndex,因此效率不高,但可以作为开始。需要根据recusive调用的返回值来计算返回值,如果找到true可以提前退出。