698. 划分为k个相等的子集
题目链接:698. 划分为k个相等的子集
代码如下:
class Solution
{
public:bool canPartitionKSubsets(vector<int>& nums, int k) {int sum=accumulate(nums.begin(),nums.end(),0);if(sum%k>0) {return false;}int per=sum/k;vector<int> cur(k,0);function<bool(int)> dfs=[&](int i)->bool{if(i==nums.size()) {return true;}for(int j=0;j<k;j++){if(j&&cur[j]==cur[j-1]) {continue;}cur[j]+=nums[i];if(cur[j]<=per&&dfs(i+1)) {return true;}cur[j]-=nums[i];}return false;};sort(nums.begin(),nums.end(),greater<int>());return dfs(0);}
};