当前位置: 首页 > news >正文

LeetCode416:分割等和子集

题目链接:416. 分割等和子集 - 力扣(LeetCode)

代码如下:

class Solution {
public:bool canPartition(vector<int>& nums) {int m = nums.size();vector<int> dp(10010, 0);int sum = 0;for(int i = 0; i < m; i++){sum += nums[i];}if(sum % 2 == 1)    return false;int target = sum / 2;for(int i = 0; i < m; i++){for(int j = target; j >= nums[i]; j--){dp[j] = max(dp[j], dp[j - nums[i]] + nums[i]);}}if(dp[target] == target)    return true;return false;}
};

代码讲解:这个题目首先我们要明白一件事情,就是要把这个分成一个相等的子集,那么其实我们就可以看似为一个01背包问题,怎么去转化为这个01背包,就是我们先把所有的子集加起来除以2,就是背包大小,看看里面的子集能不能刚刚好填满这个背包,要是能的话,返回true,否则返回false,这个里面要注意的是,if(sum % 2 == 1)return false;这个原因是因为要是奇数的话,有小数点,你放进去的东西不能够是半个吧,因为题目都给你的全是整形数据。

http://www.lryc.cn/news/448727.html

相关文章:

  • 自定义异常注解处理框架
  • 【小程序】微信小程序课程 -3 快速上手之常用方法
  • iOS 小组件
  • 【2.使用VBA自动填充Excel工作表】
  • 算法记录——链表
  • EasyExcel实现百万数据批量导出
  • 兆易GD32E508的SHRTIM配置 主从定时器 产生2对相位可调互补PWM 带死区
  • 数据归组工具
  • JavaScript 中的闭包的形成及使用场景
  • 后端返回内容有换行标识,前端如何识别换行
  • 服务器被挂马,导致网站首页被更改怎么解决
  • Android 利用OSMdroid开发GIS
  • 一文上手skywalking【上】
  • 【JavaScript】JQuery基础知识及应用
  • 初始爬虫9
  • 从细胞到临床:表观组学分析技术在精准医疗中的角色
  • 带你0到1之QT编程:二十、QT与MySQL喜结连理,构建数据库应用开发
  • 梯度下降法及其性能评估
  • 906. 超级回文数
  • 代码随想录算法训练营||二叉树
  • 线上报名小程序怎么做
  • 【测试岗】手撕代码 - 零钱兑换
  • 菱形继承的类对父类的初始化、组合、多态、多态的原理等的介绍
  • React Native 在 build 的时候如果出现 `babel.config.js` 配置文件的错误
  • 【Linux】包管理器、vim详解及简单配置
  • AVL树实现
  • 初始MYSQL数据库(6)—— 事务
  • 0基础学习PyTorch——GPU上训练和推理
  • 这款免费工具让你的电脑焕然一新,专业人士都在用
  • Java高级Day52-BasicDAO