java在尝试使用动态规划解决最佳和问题时得到错误答案
试图解决最佳和问题,但我没有得到正确的答案使用DP,但如果我删除了这段代码的记忆部分,那么我得到了正确的答案
我正在附加输出屏幕截图:
PS:请不要评判我的代码,我正在努力学习DP,我知道这个代码不是最好的
public class BestSum {
public static void main(String[] args) {
int[] arr = { 2, 3, 4, 5 };
int num = 10;
Map<Integer, List<Integer>> map = new HashMap<>();
List<Integer> list = rec(arr, num, map);
System.out.println(list);
}
static List<Integer> rec(int[] arr, int n, Map<Integer, List<Integer>> map) {
if (n == 0) {
return new ArrayList<>();
}
if (n < 0) {
return null;
}
if (map.containsKey(n)) {
return map.get(n);
}
List<Integer> sCombo = null;
for (int i : arr) {
int rem = n - i;
List<Integer> t = rec(arr, rem, map);
if (t != null) {
List<Integer> list = new ArrayList<>();
t.add(i);
list.addAll(t);
if (sCombo == null || list.size() < sCombo.size()) {
sCombo = list;
}
}
}
map.put(n, sCombo);
return map.get(n);
}
}
# 1 楼答案
名单。加(i);//写下这个,而不是t.add(i)
代码中的一个小错误没有别的