给定一个长度为 n 的数组,和一个目标组数 k ,请问能否把这个数组划分成 k 个非空子集,其和都相等。
数据范围: ,数组中的值都满足
public boolean candivide (ArrayList<Integer> nums, int k) { int sum = 0; for (Integer num : nums) { sum += num; } if (sum % k != 0) { return false; } int target = sum / k; int[] dp = new int[target + 1]; for (Integer num : nums) { if (num > target) { return false; } for (int j = target; j >= num; j--) { dp[j] = Math.max(dp[j], dp[j - num] + num); } //我题目理解的有问题,还是案例不够多呀 //nums = 2,6,3,10,8,4 k = 3时 不能凑出都是11的吧 但是还是返回的true if(dp[target] == target){ return true; } } return false; }这样子为什么能过呀,可是nums = 2,6,3,10,8,4 k = 3时 不能凑出都是11的吧 但是还是返回的true