【问题标题】:How to code a backtracking method that returns all possible solutions in an Array?如何编写返回数组中所有可能解决方案的回溯方法?
【发布时间】:2020-04-06 20:19:49
【问题描述】:

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

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

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

感谢您的任何意见!

【问题讨论】:

  • 您可以发布您目前所做的示例程序以获取社区的建议吗?您需要努力准备以一定数量购买的可能物品的“集合”。精确地迭代 items 数组,直到你用尽了钱。

标签: java arrays recursion methods backtracking


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多