给定一个长度为 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