01背包问题![](https://img-blog.csdnimg.cn/33803c77bcbb40929c4337c5d3cd9a61.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfNDQ3NDI5NDE=,size_20,color_FFFFFF,t_70,g_se,x_16)
class Solution {
public:
bool canPartition(vector<int>& nums) {
int len=nums.size();
int mid=0,tar=0;
for (int a:nums) mid+=a;
if(mid%2!=0) return false;
tar=mid/2;
bool pd[len+1][tar+1];
for(int c=0;c<=len;c++)
for(int v=0;v<=tar;v++){
pd[c][v]=false;
}
for(int a=0;a<=len;a++) pd[a][0]=true;
for(int i=1;i<=len;i++)
for(int j=1;j<=tar;j++)
{
if(j-nums[i-1]>=0)
pd[i][j]=pd[i-1][j]||pd[i-1][j-nums[i-1]];
else pd[i][j]=pd[i-1][j];
}
return pd[len][tar];
}
};
class Solution {
public:
bool canPartition(vector<int>& nums) {
int len=nums.size();
int mid=0,tar=0;
for (int a:nums) mid+=a;
if(mid%2!=0) return false;
tar=mid/2;
bool pd[tar+1];
for(int v=0;v<=tar;v++){
pd[v]=false;
}
pd[0]=true;
for(int i=1;i<=len;i++)
for(int j=tar;j>=1;j--)
{
if(j>=nums[i-1])
pd[j]=pd[j]||pd[j-nums[i-1]];
}
return pd[tar];
}
};