我是学生,并且在这个问题上陷入困境:
该方法获取一个项目数组和一定数量的“金钱”作为整数。每个项目都有一个“奖品”和说明。现在,我必须找到可以用钱购买的物品的所有可能组合。每个商品的供应量是无限的,可以多次购买。
我设法提出了一个基本算法,可以向我返回第一个可能的解决方案,但是我不知道如何到达它返回所有可能的解决方案的地步。
感谢您的投入!
答案 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;
}
}