动态规划:leetcode 416 分割等和子集(背包问题应用)
题目链接:力扣
定义dp数组:dp[i][j]表示能否从nums下标0~j任意选择数,使它们之和为j,dp数组为bool类型
状态转移方程:下标为i的数不选,dp[i][j]等价于dp[i-1][j](两个式子同真假)
下标为i的数选, dp[i][j]等价于dp[i-1][j-nums[i]](j-nums[i]小于0)(两个式子同真假)
所以,dp[i][j]与dp[i-1][j] || dp[i-1][j-nums[i]]同真假
初始化:
(1)j为0时,不可能从正数中选出和为0的数,dp[i][0]均为假
(2)i为0时,只能选择下标为0的数, dp[0][nums[0]]为真,其余均为假
代码:
代码:
int sum = 0;for (auto element : nums){sum += element;}if (sum % 2 != 0){return false;}int target = sum / 2;vector<vector<bool>>dp(nums.size(), vector<bool>(target + 1, false));for (int i = 0; i < nums.size(); i++){dp[i][0] = false;}for (int j = 0; j <= target; j++){if (j == nums[0])dp[0][j] = true;}for (int i = 1; i < nums.size(); i++){for (int j = 1; j <= target; j++){if (j - nums[i] < 0){dp[i][j] = dp[i - 1][j];}elsedp[i][j] = dp[i - 1][j] || dp[i - 1][j - nums[i]];}}return dp[nums.size() - 1][target];
动态规划:leetcode 416 分割等和子集(背包问题应用)相关推荐
- [动态规划] leetcode 416. 分割等和子集
问题描述: 分割等和子集:给你一个只包含正整数的非空数组 nums .请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 例子:输入nums = {1, 5, 11 , 5 ...
- LeetCode 416 分割等和子集
LeetCode 416 分割等和子集 题目链接 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会 ...
- LeetCode 416. 分割等和子集 【c++/java详细题解】
来自专栏<LeetCode高频面试题> 欢迎订阅 目录 1.题目 2.思路 3.二维c++代码 4.二维java代码 5.一维优化 6.一维c++代码 7.一维java代码 1.题目 给你 ...
- leetcode - 416. 分割等和子集
416. 分割等和子集 -------------------------------------------- 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和 ...
- Java实现 LeetCode 416 分割等和子集
416. 分割等和子集 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: ...
- leetcode 416. 分割等和子集
分割等和子集题解集合 DFS 记忆化搜索 记忆化搜索的另一种写法 动态规划 「滚动数组」解法 「一维空间优化」解法 DFS 思路 题意就是:给你一个非空数组,和为sum,你能否找到一个子序列,和为su ...
- LeetCode 416. 分割等和子集(动态规划)
1. 题目 给定一个只包含正整数的非空数组. 是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [ ...
- LeetCode 416. 分割等和子集(动态规划)(0-1背包)
题目描述 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, ...
- LeetCode #416 分割等和子集
题目: 给你一个 只包含正整数 的 非空 数组 nums .请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 示例 1: 输入:nums = [1,5,11,5] 输出:true ...
最新文章
- windows系统下的FTP命令
- JS中的this对象详解
- Spring Cloud Alibaba即将正式毕业,Netflix之后新生力量值得期待!
- Nginx做负载均衡报:nginx: [emerg] could not build the types_hash
- 【采用】如何搭建反欺诈策略与模型
- transformers库的使用【二】tokenizer的使用,模型的保存自定义
- (转)Python 用hashlib求中文字符串的MD5值
- react native中一次错误排查 Error:Error: Duplicate resources
- RPM安装包-Spec文件參数具体解释与演示样例分析
- [笔记].STM32 BOOT[0:1]启动设置
- mysql中两次排序_MySQL中的两种排序方式: index和filesort
- hdu--1231--并查集连分量的个数
- 用pycharm写python老是提示错误_python pycharm错误集锦
- 开源漏洞扫描工具(OWASP-Dependency-Check)探索
- 中国女性补体面膜市场趋势报告、技术动态创新及市场预测
- HTML 修真录------深渊三君王
- Sklearn 中的可用数据集
- 计算机访学面试,访学申请Skype面试经历
- idea单元测试时,@Test爆红解决方案
- Easy Mock 的使用
热门文章
- HDU2189 来生一起走【完全背包】
- HDU1249 三角形【切割平面】
- Matlab Tricks(七)—— 矩阵列/列的归一化/单位化(normalize)
- 盈不足术与老鼠打洞问题的近似解
- numpy 辨异(一) —— reshape 与 resize
- C++设计模式——Composite 组合模式
- Google 搜索命令
- 群辉服务器根目录新建文件夹,群晖 synology NAS 存储创建存储空间的方法
- 内容联盟程序_英雄联盟可以偷看你的网页?你的账号密码还安全吗?
- 联想记忆计算机网络,联想记忆网络,associative memory network,音标,读音,翻译,英文例句,英语词典...