leetcode 动态规划 golang
416. 分割等和子集
能否在一个正整数数组中,找到一个子集,使得子集的和为数组和的一半。
这个问题同背包问题一致,NP问题可以使用动态规划的方式进行求解,只不过装满背包变成了一半。
同时子集和为原数组的一半也多了一些排除条件:数组和必须为偶数;数组中的最大值必须不能大于和的一半。
关键在于状态的定义和状态转移方程以及初始条件:
状态dp[i][j]表示从数组[0,i]的范围内,能否找到和为j的子集。二维数组行数为原数组的长度,列为target+1,因为要算上0,
即i<=len(n...
原创
2020-10-11 16:20:09 ·
193 阅读 ·
0 评论