有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在尝试使用动态规划解决最佳和问题时得到错误答案

试图解决最佳和问题,但我没有得到正确的答案使用DP,但如果我删除了这段代码的记忆部分,那么我得到了正确的答案

我正在附加输出屏幕截图:

enter image description here

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) 个答案

  1. # 1 楼答案

    名单。加(i);//写下这个,而不是t.add(i)

    代码中的一个小错误没有别的