Partition to K Equal Sum Subsets问题及解法
来源:互联网 发布:中国内审协会网络培训 编辑:程序博客网 时间:2024/05/22 17:02
问题描述:
Given an array of integers nums
and a positive integer k
, find whether it's possible to divide this array into k
non-empty subsets whose sums are all equal.
示例:
Input: nums = [4, 3, 2, 3, 5, 2, 1], k = 4Output: TrueExplanation: It's possible to divide it into 4 subsets (5), (1, 4), (2,3), (2,3) with equal sums.
问题分析:
可以先求出数组和sum,看看是否能整除k,若不能,返回false,否则,遍历整个数组,看看是否能划分成k个子序列和相等的分割。
注意,这里对数组进行了降序排序。
过程详见代码:
class Solution {public: bool canPartitionKSubsets(vector<int>& nums, int k) {int sum = accumulate(nums.begin(), nums.end(), 0);sort(nums.begin(), nums.end(), [](int a, int b){return a > b; }); if (sum % k) return false;int t = sum / k;vector<bool> dp(nums.size(), false);int res = 0;for (int i = 0; i < nums.size(); i++){if (!dp[i] && dfs(dp, nums, t, i, 0)) res++;}return res == k;}bool dfs(vector<bool>& dp, vector<int>& nums, int target, int start,int sum){if (sum == target) {return true;}for (int i = start; i < nums.size(); i++){if (!dp[i]){dp[i] = true;bool b = dfs(dp, nums, target, i + 1, sum + nums[i]);if (!b) dp[i] = false;else return true;}}return false; }};
阅读全文
0 0
- Partition to K Equal Sum Subsets问题及解法
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- Leetcode | Partition to K Equal Sum Subsets
- [LeetCode] Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets
- Partition to K Equal Sum Subsets
- subsets/subsets II/Partition Equal Subset Sum/Partition to K Equal Sum Subsets
- Partition Equal Subset Sum问题及解法
- LWC 54:698. Partition to K Equal Sum Subsets
- 698. Partition to K Equal Sum Subsets(M)
- leetcode-698-Partition to K Equal Sum Subsets
- LeetCoe 698 (Partition to K Equal Sum Subsets)
- LeetCode #698 Partition to K Equal Sum Subsets
- 蓝桥杯-------基础训练--杨辉三角、查找整数,数列特征、01字串--Method
- JavaNote
- Imageloder
- scrapy可以成功运行,但不能返回要爬取的文字内容
- 从标准输入获取C语言代码并判断花括号是否匹配
- Partition to K Equal Sum Subsets问题及解法
- Tablayout基本使用
- Mac小技巧之"xxx.app已损坏,打不开.你应该将它移到废纸篓"
- Spark二次排序
- It's not a Bug, it's a Feature! UVA
- 【11】框架学习—Spring的事务管理、Spring框架的JDBC模板
- 高情商的人,才能看懂的十幅漫画.
- 获取scrollTop兼容各浏览器的方法
- 从平方探测法引申——平方数列取模的规律数列