原题链接:https://leetcode-cn.com/problems/partition-to-k-equal-sum-subsets/

相关问题:分隔等和子集

递归的方法其实不难想,但是很难写。很容易想到,求出子集的和sum,然后找出是否存在正好k个子集的和都等于sum。这里的比较有技巧的点是,如果需要k个子集,那么建k个桶groups,每个桶都初始化为sum。接着就进入递归,递归传入初始索引pos从0开始,在递归内部对groups进行循环,当索引pos大于nums范围时,说明所有groups都已经被填满了,因为nums的和一定是等于groups的和。

bool canPartitionKSubsets(vector<int>& nums, int k) {int len = nums.size();int sum = accumulate(nums.begin(), nums.end(), 0);if (sum % k == 0){sum /= k;}else{return false;}sort(nums.begin(),nums.end(),greater<int>());vector<int> groups(k,sum);return canSubsets(nums,0,groups);
}bool canSubsets(vector<int>& nums,int pos,vector<int>& groups){if(pos>=nums.size()){ //所有的group都填满了return true;}int len=groups.size();for(int i=0;i<len;i++){//遍历k个groupif(groups[i]-nums[pos]>=0){groups[i]-=nums[pos];//放pos进桶中if(canSubsets(nums,pos+1,groups)){return true;} groups[i]+=nums[pos];//pos不该在桶中,拿出}}return false;
}

leetcode算法题--划分为k个相等的子集★相关推荐

  1. 698. 划分为k个相等的子集:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。

    题目描述 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k ...

  2. leetcode算法题--最小的k个数

    原题链接:https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcof/ vector<int> getLeastNumbers(ve ...

  3. leetcode 698. Partition to K Equal Sum Subsets | 698. 划分为k个相等的子集(回溯法)

    题目 https://leetcode.com/problems/partition-to-k-equal-sum-subsets/ 题解 一上来以为是 dp(想到了左神讲的,将一个数组分成两个尽可能 ...

  4. LeetCode 698. 划分为k个相等的子集(回溯)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 1: 输入: nums = [4, 3, ...

  5. Leetcode 698. 划分为k个相等的子集 解题思路及C++实现

    解题思路: 这是一个典型的深度优先搜索问题.使用一个相同大小的数组visited来记录元素是否被访问过(即是被已被划分到相应的子集中). 每找到一个划分子集,相应对k减一,再继续执行深度优先搜索程序. ...

  6. 力扣 698. 划分为k个相等的子集

    题目 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 示例 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 ...

  7. LeetCode算法题-K-diff Pairs in an Array(Java实现)

    这是悦乐书的第254次更新,第267篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第121题(顺位题号是532).给定一个整数数组和一个整数k,您需要找到数组中唯一的k- ...

  8. LeetCode算法题-Reverse Linked List(Java实现)

    这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...

  9. leetcode算法题-- 买卖股票的最佳时机

    原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 这类股票题目请见leetcode算法题–最佳买卖股票时机含 ...

最新文章

  1. 图像识别落地机会最多 腾讯全面输出视觉AI
  2. IT人的眼睛就是一把尺!
  3. 《人潮汹涌》的观后感
  4. php分列显示,【杂谈】PHP数组怎样按键名完成降序分列
  5. yii和mysql apache_配置Apache,php5,mysql ,以及配置yii框架的简介
  6. html 全屏显示某个区域,JS实现指定区域的全屏显示功能示例
  7. Java发送form-data请求实现文件上传
  8. 股票和基金,哪个适合打工族?
  9. python网络爬虫学习笔记(二):爬虫基本概述
  10. java值的传递_Java 8可选–基于值的类使用指南
  11. Microsfot Office Communicator 聊天记录 外挂
  12. Spring源码之ApplicationContext(四)功能补充
  13. js/vue:video 视频播放器
  14. python录入数据,python处理写入数据教学教程
  15. markdown编辑器推荐(附官网)
  16. 大学生如何培育计算机思维,计算机思维下的计算机课程改革思路探索
  17. 中国黑客生存特写,互联网金钱帝国里的英雄和盗匪
  18. Android笔记:将布局转换成图片
  19. 七款简单易用的项目管理平台
  20. 计算机桌面下方标图,电脑下方怎么设置显示桌面图标

热门文章

  1. python小游戏编程实例-Python实现的弹球小游戏示例
  2. python对笔记本电脑的要求-笔记本电脑中多版本python的配置
  3. php和python哪个好-写后端 Python,nodejs和php哪个更好一些?
  4. NVIDIA Jetson Xavier NX设备上使用jtop监控GPU、CPU、内存等的使用
  5. DeepFaceLab史上最快的环境搭建(虚拟环境)
  6. jquery ajax跨域asp,jQuery跨域调用Asp.Net Web API
  7. java工程师的工作时间_Java 工程师真的每天只需工作四小时吗?
  8. LeetCode 601. Human Traffic of Stadium
  9. CC++图形图像处理开源库
  10. Qt中禁止调节窗口大小