https://leetcode.com/problems/partition-to-k-equal-sum-subsets/
一上来以为是 dp(想到了左神讲的,将一个数组分成两个尽可能相等的部分那道题),再一想,原来是 backtracing。
class Solution {
public boolean canPartitionKSubsets(int[] nums, int k) {
int sum = 0;
for (int n : nums) {
sum += n;
}
int target = sum / k;
if (target * k != sum) return false;
return process(nums, 0, new int[k], target);
}
public boolean process(int[] nums, int i, int[] bucket, int target) {
if (i == nums.length) return true;
for (int j = 0; j < bucket.length; j++) {
if (bucket[j] + nums[i] <= target) {
bucket[j] += nums[i];
if (process(nums, i + 1, bucket, target)) return true;
bucket[j] -= nums[i];
}
}
return false;
}
}
一把过,但是效率很低。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/sinat_42483341/article/details/121262743
内容来源于网络,如有侵权,请联系作者删除!