algorithm - 来自递归回溯的子集总和

标签 algorithm combinations subset subset-sum

我正在尝试将“列出字符串中的所有组合”问题修改为我们需要打印具有给定“总和”的所有集合的问题。这是我的初始代码,但我不确定如何在代码中保存集合列表:

/**
 * method to return  all sets with a given sum.
 **/
public static List<List<Integer>> lists = new ArrayList<>();
public static List<Integer> list = new ArrayList<Integer>();
public static void countSubsetSum3(int arr[], int k, int sum) {
    if(sum == 0) {
        return;
    }
    if(sum != 0 && k == 0) {
        return;
    }
    if(sum < arr[k - 1]) {
        countSubsetSum3(arr, k-1, sum);
    }
    countSubsetSum3(arr, k-1, sum - arr[k-1]);
    countSubsetSum3(arr, k-1, sum);
}

我们如何修改此代码以使其打印所有可能的总和为“sum”的集合。谢谢!

最佳答案

string 的长度为 0 时,您必须从函数返回。现在你只是打印你的 prefix 然后是一行:

subset(prefix + string.charAt(0), string.substring(1));

被执行,这会引发 StringIndexOutOfBoundsException 因为您在空字符串上调用 .substring(1)

关于algorithm - 来自递归回溯的子集总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605900/

相关文章:

algorithm - 用常用词监控品牌

处理分配问题的算法

objective-c - 生成所有总和组合

r - 按一列中的因子拆分/子集数据框

r - 为什么对数据帧进行子集化会改变时间序列的类别?

r - data.table:二分查找 VS 向量扫描的性能

algorithm - 是否有可能有两个有效的大 O 运行时依赖于不同的变量?

algorithm - 代入求解递归方程

c++ - 编码比赛 : How to store large numbers and find its all combination modulus P

Python 查找对,相同的值