行业知识
代码随想录算法训练营|day42
2026-10-29 11:07:17
来源:互联网转载
第九章 动态规划
- 416.分割等和子集
- 代���随想录文章详解
背包类型 求解方法 0/1背包 外循环nums,内循环target,target倒序且target>=nums[i] 完全背包 外循环nums,内循环target,target正序且target>=nums[i] 组合背包 外循环target,内循环nums,target正序且target>=nums[i] 416.分割等和子集
该问题转换为在数组中找到元素和target=sum(nums)/2即可,为0/1背包问题,dp[i]表示是否存在子集和为i。
()初始化:dp[0]=true,表示和为0,不需要选取任何元素,为真
如果和为奇数或者数组中最大值大于target无法分成两个等和子集
()func canPartition(nums []int) bool {sum, maxNum := 0, 0for _, num := range nums {maxNum = max(maxNum, num)sum += num}if sum%2 != 0 {return false}target := sum / 2if maxNum > target {return false}dp := make([]bool, target + 1)dp[0] = truefor _, num := range nums {for i := target; i >= num; i-- {dp[i] = dp[i] || dp[i - num]}}return dp[target]}代码随想录文章详解
01背包理论基础
01背包理论基础(滚动数组)
416.分割等和子集
上一篇:云端服务器怎么挂网站?
下一篇:铁拳7怎么更改服务器?