| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 416. 分割等和子集 -> 正文阅读 |
|
[数据结构与算法]416. 分割等和子集 |
416. 分割等和子集给你一个 只包含正整数 的 非空 数组 示例 1: 输入:nums = [1,5,11,5] 输入:nums = [1,2,3,5] 思考开始实在想不起来 先用暴力法吧 结果用回溯法超时了 = = 假设本集合的总和为sum,集合中最大的数值为 maxNum其实本题的任务就是找到一个和为target = sum/2的集合
我们假设这个集合可以取到一个子集其和为target,那么另外一个子集之和也为target 所以我们只需找个一个子集的最大值为target即可 我们可以转化为01背包问题,这道题与传统的「0-10?1 背包问题」的区别在于,传统的「0-10?1 背包问题」要求选取的物品的重量之和不能超过背包的总容量,这道题则要求选取的数字的和恰好等于整个数组的元素和的一半。
确定dp数组及下标含义 dp[i][j] 表示0-i个物品可以装进重量为j的背包的最大价值 确定转移方程
初始化数组 很简单 完善dp数组 也不难 这里面用了点像回溯法的剪支,如果当前包里装的最大值大于target,就不用继续扫描后面的元素了。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:02:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |