前言
打卡代码随想录算法训练营第49期第三十五天(  ̄ー ̄)人(^▽^ )
首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。
今日题目
在学习今日的题目前先看:动态规划文字理论 、 卡哥讲解动态规划
二维背包
文章讲解:二维背包
视频讲解:卡哥讲解 —— 二维背包
一维背包
文章讲解:一维背包
视频讲解:卡哥讲解 —— 一维背包
LeetCode 416 分割等和子集
题目链接:416 分割等和子集
文章讲解:分割等和子集
视频讲解:卡哥讲解 —— 分割等和子集
public class Solution {
public bool CanPartition(int[] nums) {
int sum = 0;
foreach(var num in nums)
sum += num;
//如果不能整除 肯定不能分割等和子集
if(sum % 2 == 1)
return false;
int target = sum / 2;
//dp数组含义:容量为i的背包 能放下的最大为dp[i]
int[] dp = new int[sum];
for(int i = 0; i < nums.Length; i++)
{
for(int j = target; j >= nums[i]; j--)
{
//递推公式
dp[j] = Math.Max(dp[j] , dp[j - nums[i]] + nums[i]);
}
}
if(dp[target] == target)
return true;
return false;
}
}
今天就一件事,搞明白背包!!!!!!!!!!!明天见~~~