698. 划分为k个相等的子集
把一个数组,拆分成K个大小一样的子数组。方法可以是状态枚举,或者dfs
class Solution {
public:
bool canPartitionKSubsets(vector<int>& nums, int k) {
// 从大向小,提高效率
sort(nums.begin(), nums.end(),greater<int>());
int total = accumulate(nums.begin(), nums.end(), 0);
if (total%k != 0) {
return false;
}
int avg = total/k;
if (nums.front()>avg) return false;
int n = nums.size();
vector<int> sum(k,0);
// 使用dfs的方法,每次去枚举每一个队列里能不能有空间放开这个数字
function<bool(int)> dfs