当前位置: 首页 > news >正文

用vs2005做网站 怎样搭配色彩百度推广最近怎么了

用vs2005做网站 怎样搭配色彩,百度推广最近怎么了,曲阜网站建设,自建站做seo目录 一、分割等和子集-LeetCode 416思路实现代码1.二维dp代码2.一维dp代码 问题总结 一、分割等和子集-LeetCode 416 Leecode链接: leetcode 416 文章链接: 代码随想录 视频链接: B站 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&…

目录

  • 一、分割等和子集-LeetCode 416
    • 思路
    • 实现代码
      • 1.二维dp代码
      • 2.一维dp代码
    • 问题
    • 总结



一、分割等和子集-LeetCode 416

Leecode链接: leetcode 416
文章链接: 代码随想录
视频链接: B站

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

示例1:

输入:nums = [1,5,11,5]
输出:true
解释:数组可以分割成 [1, 5, 5][11]

思路

本体可以看作一个背包模型,将数组总和除2,将总和一半定义为背包的容量,数组元素为可选的物品。本题既可以定义一个一维dp数组,也可以定义一个二维dp数组,但二维便于理解与讲解并且一维只是二维的精简版,思想基本一致,所以主要写一下二维的思路。数组形式为dp[i][j],i为可选的物品范围,例如当i为3时,表示可选的物品范围为0到3下标的物品任意物品;j表示当前背包的容量大小。dp数组含义为,在j容量下,物品0到i范围可以获得的最大和。递推公式为dp[i][j] = dp[i-1][j]或dp[i][j] = max(dp[i-1][j] , dp[i-1][j-nums[i]] + nums[i])。前者表示不放的情况,后者表示物品放入后可能的情况。不放的条件就是背包容量不足以放下物品,放物品的条件就是当前背包的容量大于或等于当前物品的重量。

实现代码

1.二维dp代码

//cpp
class Solution {
public:bool canPartition(vector<int>& nums) {int sum = 0;int len = nums.size();//物品的数量for(int a:nums){sum += a;} if(sum%2 == 1) return false;int target = sum/2;//既是物品的价值也是物品的重量vector<vector<int>>dp(len,vector<int>(target+1,0));for(int j = nums[0];j<=target;j++){dp[0][j] = nums[0];}for(int i = 1;i<len;i++){for(int j = 0;j<=target;j++){if(j<nums[i]){dp[i][j] = dp[i-1][j];}else {dp[i][j] = max(dp[i-1][j],dp[i-1][j - nums[i]]+nums[i]);}}}if(dp[len-1][target] == target) return true;return false;}
};

2.一维dp代码

//cpp
class Solution {
public:bool canPartition(vector<int>& nums) {//vector<int> dp(10001, 0);int sum = 0;for(int a:nums){sum += a;} if(sum%2 == 1) return false;int t = sum/2;vector<int>dp(t+1,0);for(int i = 0;i<nums.size();i++){for(int j = t;j>=nums[i];j--){dp[j] = max(dp[j],dp[j-nums[i]]+nums[i]);}}if(dp[t] == t) return true;return false;}
};

问题

代码实现细节不熟练,比如初始化时,怎么将第一行的哪些数初始化为恒定值。

总结

一维与二维的区别在于:省去了多余空间的使用,并且改变了遍历顺序,这是因为如果跟二维数组一样从前往后遍历,就会导致重复选择同一个物品。比如,当i = 1时,dp[1] = 1、dp[2] = 1;当i = 2时,dp[1] = 1、dp[2] = 2,显然是不对的因为一件物品只能选一次。虽然一维省去了空间,但时间复杂很高,leetcode上一维dp的执行用时为300ms左右,空间占用达到了10MB左右;二维dp为100ms左右,同样的二维空间占用达到了98MB左右。


http://www.khdw.cn/news/42090.html

相关文章:

  • 图书馆网站建设的要求seo外链建设的方法有
  • 自己做的网站如何让别人访问网站推广优化方式
  • 网站建设 上海网站建设2023百度秒收录技术
  • 网站文案的重要性游戏代理加盟平台
  • 建设端午节网站的目的主题企业宣传片文案
  • wordpress建m域名网站网络营销的企业有哪些
  • 京东网站建设流程sem是什么工作
  • 揭阳网站设计公司html模板网站
  • 南京做网站多少钱网站黄页推广软件
  • 做网站的公司哪好深圳网站建设公司官网
  • wordpress google字体 360seo网站推广推荐
  • 广州商城网站建设报价国内真正的免费建站
  • wordpress新界面搜索引擎优化的内容
  • 网站建设 肥城信息流广告代运营
  • 宝鸡专门做网站的公司91
  • 站长seo计费系统酒店如何进行网络营销
  • 做淘客必须有自己内部网站吗网络营销课程介绍
  • 哪里网站用vue.js做的公司网站推广技巧
  • 做网站需要提供什么搜索引擎优化员简历
  • h5特效网站欣赏进行网络推广
  • 用什么给网站做测试pc网站优化排名软件
  • 天峨县建设局网站快速排名推荐
  • 商城网站的建设费用百度关键词排名价格
  • 做网站公司的未来长沙企业网站设计
  • 如何注册企业邮箱免费优化网站推广
  • win7iis添加网站重庆森林电影完整版
  • 广州企业网站建设开发网络营销的概念与特点
  • 网站如何做快捷支付接口百度电话号码查询
  • 开公司怎么找客户潍坊seo推广
  • 网站文件夹权限个人如何做seo推广