热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

698.partitiontokequalsumsubsets划为k个相等的子集

问题描述698.划为k个相等的子集解题思路首先,对数组按照从大到小排序,相比从小到大排序,能避免[1,1,2,2]这样的数组的误判;利用used[i]数组避免重复使用同一个元素,如

问题描述

698.划为k个相等的子集


解题思路

首先,对数组按照从大到小排序,相比从小到大排序,能避免[1, 1, 2, 2]这样的数组的误判;

利用used[i]数组避免重复使用同一个元素,如果sum == target,就将sum置零,如果cnt == k,说明满足条件。


代码

class Solution {
public:
bool dfs(vector &nums, int index, int sum, int target, int cnt, int k, vector &used, int idx) {
if (cnt == k)
return true;
if (sum == target) {
return dfs(nums, idx - 1, 0, target, cnt + 1, k, used, idx - 1); //注意这里是idex - 1而不是index - 1
}
for (int i = index; i >= 0; i--) {
if (used[i] || sum + nums[i] > target)
continue;
used[i] = 1;
if (dfs(nums, i - 1, sum + nums[i], target, cnt, k, used, idx))
return true;
used[i] = 0;
if (sum == 0)
return false;
}
return false;
}
bool canPartitionKSubsets(vector &nums, int k) {
int sum = 0;
for (int i : nums)
sum += i;
if (sum % k != 0)
return false;
std::sort(nums.begin(), nums.end());
if (nums.back() > sum / k)
return false;
vector used(nums.size(), 0);
return dfs(nums, nums.size() - 1, 0, sum / k, 0, k, used, nums.size() - 1);
}
};


推荐阅读
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了如何使用动态尺寸巧妙地将R中的数组子集化。作者通过解释数组的三个维度以及第三个维度的长度可变性,提出了一种周期性子集化数组的方法,并举例说明了如何创建第二个数组。这个方法对于制作模拟模型非常有用。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 将数组划分为两个子集,在它们的最大值和最小值之间进行最小位异或原 ... [详细]
  • 深入解析Python文本数据处理的技巧与方法
    学习Python时,它总能让人深刻体会到这款语言的魅力。今天小编为大家带来一个有趣的项目,用Python处理文本数据,一起来看看今天的问题吧 ... [详细]
  • 基于halcon的特征匹配实例
    特征匹配原图模板识别图代码结果原图模板识别图代码*这个例子在图片数据库中查找文章的页面。*第一步是训练不同的页面并创建模型。*然后搜索未知图像并检测出正确的文章页面。*请注意& ... [详细]
  • steps/train_mono.sh
    定义拓扑结构、参数初始化$gmm-init-mono--shared-phones$langphonessets.int--train-feats$featssubset-fe ... [详细]
  • 集合set集合是可变的容器集合内的数据对象都是唯一的(不能重复多次的)集合是无序的存储结构,集合中的数据没有先后关系集合内的元素必须是不可 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
author-avatar
liyanyl_499
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有