繁体   English   中英

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

[英]How to code a backtracking method that returns all possible solutions in an Array?

我是学生,我被这个问题困住了:

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

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

我很感谢任何输入!

找到的解决方案的数组有一个问题:数组在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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM