网上有贴说,第四题有01背包问题解决我发现不行。很简单,小的值对应的的余数也可以大,大的值对应的余数也可以小。逻辑混乱。所以我添加了一个辅助集合Sorted,进行暴力破解。 static SortedSet<Integer> set = new TreeSet<>(); public static void knapsack01(int[] data, int k, int m, int total) { int n = data.length; // 已经对数组中的所有数据进行判断了 if (k==n) { set.add(total%m); } else { // 选当前索引的数组,也就是total值增加 knapsack01(data, k+1, m, total+data[k]); // 不选当前索引的数组,total值不变 knapsack01(data, k+1, m, total); } }