如何编写返回数组中所有可能解决方案的回溯方法?

时间:2019-12-13 11:21:38

标签: java arrays recursion methods backtracking

我是学生,并且在这个问题上陷入困境:

该方法获取一个项目数组和一定数量的“金钱”作为整数。每个项目都有一个“奖品”和说明。现在,我必须找到可以用钱购买的物品的所有可能组合。每个商品的供应量是无限的,可以多次购买。

我设法提出了一个基本算法,可以向我返回第一个可能的解决方案,但是我不知道如何到达它返回所有可能的解决方案的地步。

感谢您的投入!

1 个答案:

答案 0 :(得分:0)

找到的解决方案的数组有一个问题:数组在Java中是固定长度的。改用List,并将其作为参数传递。

代替单个解决方案:

Solution s = search(param);

这样做:

List<Solution> solutions = new ArrayList<>();
search(param, solutions);
for (Solution s : solutions) {
    System.out.println(s);
}

使用

void search (Param param, List<Solution> solutions) {
    ...
    if (solved) {
        solutions.add(new Solution(...));
        return;
    }
}