热门标签 | 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[]{兴业银行, ... [详细]
  • 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等子类。 ... [详细]
  • steps/train_mono.sh
    定义拓扑结构、参数初始化$gmm-init-mono--shared-phones$langphonessets.int--train-feats$featssubset-fe ... [详细]
  • 集合set集合是可变的容器集合内的数据对象都是唯一的(不能重复多次的)集合是无序的存储结构,集合中的数据没有先后关系集合内的元素必须是不可 ... [详细]
  • 转载请注明原文地址:http:www.cnblogs.comygj0930p6409067.html1:HammingdistanceTheHammin ... [详细]
  • CF809A:Do you want a date?(数学  思维)
    A.Doyouwantadate?timelimitpertest2secondsmemorylimitpertest256megabytesinputstandardinputo ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文整理了Java中org.apache.commons.collections4.ListUtils.unmodifiableList()方法的一些代码示例,展示了 ... [详细]
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社区 版权所有