给定一个长度为 n 的数组,和一个目标组数 k ,请问能否把这个数组划分成 k 个非空子集,其和都相等。 数据范围: ,数组中的值都满足
区块链毕设网qklbishe.com为您提供问题的解答
给定一个长度为 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
16:53
以上就是关于问题给定一个长度为 n 的数组,和一个目标组数 k ,请问能否把这个数组划分成 k 个非空子集,其和都相等。
数据范围: ,数组中的值都满足的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训