当前位置: 首页> 健康> 美食 > 太原网络营销策划_北京网页设计公司排名_seo自动排名软件_关键词的作用

太原网络营销策划_北京网页设计公司排名_seo自动排名软件_关键词的作用

时间:2025/8/23 13:02:21来源:https://blog.csdn.net/weixin_45413272/article/details/147041350 浏览次数:0次
太原网络营销策划_北京网页设计公司排名_seo自动排名软件_关键词的作用

题目链接

题意

给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等

1 ≤ n u m s . l e n g t h ≤ 200 , 1 ≤ n u m s [ i ] ≤ 100 1 \le nums.length \le 200 ,1 \le nums[i] \le 100 1nums.length200,1nums[i]100

思路

转化成找出数组中一部分数相加等于数组总和的一半
n个元素,组成和为m=sum>>1是否可能

Code

class Solution {
public:bool canPartition(vector<int>& nums) {int sum=0;for(auto i:nums) sum+=i;if(sum&1) return 0;int m=sum>>1,n=nums.size();vector<int>a(n+1);for(int i=0;i<n;i++){a[i+1]=nums[i];}vector<vector<bool>>dp(n+1,vector<bool>(m+1));for(int i=0;i<=n;i++){dp[i][0]=1;}for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){dp[i][j]=dp[i-1][j];if(a[i]==j) dp[i][j]=1;else if(a[i]<j) dp[i][j]=dp[i][j]|dp[i-1][j-a[i]];}}return dp[n][m];}
};

实现细节

对于dp[i][j]有三种情况 a[i]>j,==j,<j

关键字:太原网络营销策划_北京网页设计公司排名_seo自动排名软件_关键词的作用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: