子集和问题的一个实例为〈S,t〉。其中,S={ 1 x , 2 x ,…, n x }是一个常数的集合,c是一个常数。子集和问题判定是否存在S的一个子集S1,使得 S1中的所有元素之和等于c。
常熟集合为请求参数List<Double>,targetNumber为目标常数c
笨办法就是列举,假如有五个数1,2,3,4,5,求相加结果为7的组合,列举所有的相加组合,只要有一条支线的相加结果等于7,该支线后面的节点就不可以不考虑了,比如 1,2,4相加结果为7,那么1,2,4后面可能的组合就不需要考虑了

主要代码:
public static List<List<Double>> handleNumber(List<Double> list, Double targetNumber) {
List<List<Double>> resultList = new ArrayList<List<Double>>();
List<Double> tempList;
for (int i = 0; i < list.size(); i++) {
int nextIndex = i + 1;
if (hasNext(list, nextIndex)) {
tempList = new ArrayList<Double>();
tempList.add(list.get(i));
handleNumber2(list.get(i), resultList, tempList, list.get(i), targetN

本文探讨了如何在Java中解决子集和问题,通过举例说明了当集合S中的元素之和等于常数c时,如何判断是否存在这样的子集。核心思路是列举所有可能的组合并检查它们的和是否等于目标数。主要代码使用嵌套List来存储符合条件的子集组合。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



