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

工业设计网站外网北京企业网站制作

工业设计网站外网,北京企业网站制作,hcms wordpress,o2o网站开发公司1049. 最后一块石头的重量 II 讲解:代码随想录 思路: 01背包问题:题意说要求粉碎石头后留下的最小石头重量,石头粉碎的规则是两个石头如果重量相等,同时粉碎,如果重量不相等,粉碎后的重量是大…

1049. 最后一块石头的重量 II 

 讲解:代码随想录

思路:

01背包问题:题意说要求粉碎石头后留下的最小石头重量,石头粉碎的规则是两个石头如果重量相等,同时粉碎,如果重量不相等,粉碎后的重量是大减小。抽象成背包问题,就是尽可能装满总石头重量一半的背包,此时粉碎的最彻底,为什么粉碎的更彻底,因为尽可能装满石头重量一半的背包,这样能装进背包的这部分,就会对应另一半的部分同时粉碎,此时剩下的就是无法粉碎的石头

代码:

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {vector<int> dp(3000,0);int sum = 0;for(int i =0 ;i<stones.size();i++){sum+=stones[i];}int target = sum/2;for(int i = 0;i<stones.size();i++){for(int j = target;j>=stones[i];j--)//最大遍历到当前遍历的物品,否则会重复{dp[j] = max(dp[j],dp[j-stones[i]]+stones[i]);}}return sum-dp[target]-dp[target];}
};

遇到的问题:

1.对于背包问题的抽象,背包的容量是多少,是石头总重量的一半。

494. 目标和

思路:

01背包问题:通过left(正的部分) - right(负的部分)=target,设 right = sum -left,所以target = left  - (sum-left),所以left = (target+sum)/2,sum和target为固定值,就可以求解了。然后转化为背包问题,就是用nums数组里的数,装满left大小容量的背包,有多少的方法

代码:

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int sum = 0;for(int i =0;i<nums.size();i++)sum+=nums[i];if(abs(target) > sum)return 0;if((sum+target)%2 == 1)return 0;int bagsize = (sum+target)/2;vector<vector<int>> dp(nums.size(),vector<int>(bagsize+1,0));//注意二维数组的初始化方式//dp数组初始化if(nums[0]<=bagsize)dp[0][nums[0]] = 1;dp[0][0] = 1;int numzero = 0;for(int i =0;i<nums.size();i++){if(nums[i]==0)numzero++;dp[i][0] = pow(2.0,numzero);//幂运算函数,2.0是底数,numzero是指数}for(int i =1;i<nums.size();i++){for(int j = 0;j <= bagsize;j++){if(nums[i]>j)dp[i][j] = dp[i-1][j];else dp[i][j] = dp[i-1][j-nums[i]] + dp[i-1][j];}}return dp[nums.size()-1][bagsize];}
};

遇到的问题:

1.对于01背包的抽象问题非常难想,并且求出left部分的组合方式的方法数,就相当于求出left和right的组合方法数,比较难想

474. 一和零

思路:

01背包:如何抽象成背包问题?因为要求指定m个0和n个1,的最大子集。m个0和n个1看作背包的容量,此题特殊的是,背包的容量是一个二维的,两个值。

代码:

滚动数组法

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m+1,vector<int>(n+1,0));int zeronum = 0,onenum = 0;for(string str : strs){for(char c : str){if(c == '0')zeronum++;else onenum++;}}for(int i = m ;i>=z)}
};

遇到的问题:

1.在理解背包是二维的容量,并且01背包的常规滚动数组的方法,但是因为背包容量是二维的,所以还是使用二维数组,想要使用常规01背包二维数组的方法,要使用三维数组


文章转载自:

http://IuysfXvd.qfcnp.cn
http://NeGoU1fY.qfcnp.cn
http://od1Q6NXh.qfcnp.cn
http://A8cIBzyQ.qfcnp.cn
http://vDcOgjZA.qfcnp.cn
http://iuGzUZOz.qfcnp.cn
http://U9Qs3yya.qfcnp.cn
http://wrVgizUV.qfcnp.cn
http://TR9NM55u.qfcnp.cn
http://gOt9Isxe.qfcnp.cn
http://JXJ4e0j1.qfcnp.cn
http://AZYUJTfk.qfcnp.cn
http://xktAmtqq.qfcnp.cn
http://70Pzdifz.qfcnp.cn
http://FgF8s7aQ.qfcnp.cn
http://kVTLZpkP.qfcnp.cn
http://CGbmz6eA.qfcnp.cn
http://H1Y78nra.qfcnp.cn
http://VTOAhzto.qfcnp.cn
http://LO5bTZXZ.qfcnp.cn
http://AFYj8sVR.qfcnp.cn
http://eAnlchs6.qfcnp.cn
http://Jvadbx3c.qfcnp.cn
http://ImeCBjjd.qfcnp.cn
http://I4gFzZmq.qfcnp.cn
http://RcZgQjKj.qfcnp.cn
http://e6aYLcSs.qfcnp.cn
http://yZ1oZnFj.qfcnp.cn
http://zoTRtPCy.qfcnp.cn
http://r2Ku2qo1.qfcnp.cn
http://www.dtcms.com/wzjs/657879.html

相关文章:

  • 网站域名备案证书小制作简单易学
  • 免费下载图片的网站有哪些东莞常平镇地图
  • 用了wordpress的网站顺德微信网站建设
  • 网站建设开发合同北京王府井在哪个区
  • 桥梁建设网站高邮建设银行网站
  • 安徽池州做企业网站wordpress mysql 安装
  • 郑州网站设计公司排名西安推广网站
  • 凡客建设网站稳定吗网站建设朋友圈
  • 电脑做网站服务器WIN7 买个域名wordpress 爬
  • 网站平面模板上海企业电话查询
  • 某某网站安全建设方案wordpress 转 html
  • 网站开发用什么数据库dedecmsv5.6 qq空间网站模板
  • 福州网站搭建洛阳建设网站的公司
  • 购物网站制作费用做的烂的网站
  • 网站备案相关前置许可企业网站建设主要包括哪些内容
  • 快递网站模版深圳定制开发公司
  • 贵州建设工程招投标协会网站网站开发 技术投标
  • 建网站的详细技术卢松松网站的百度广告怎么做的
  • 珠海网站制作报价建设外贸网站案例
  • 网站建设竞价托管服务网易企业邮箱服务器配置
  • 用dw设计网站模板下载介绍自己公司的范文
  • 生态农业网站建设方案肇庆网站快速排名优化
  • 做教育集团的网站建设微信开放平台介绍
  • 如何添加百度指数网站开发和优化关系
  • 深圳网站建设深圳网站目录结构怎么做
  • 南通做网站多少钱网站建设的要求及标准
  • 常用的cms建站系统如何做好网络营销工作
  • 如何自己做收费的视频网站免费软件下载网站
  • 邵阳建设网站公司做网站效果图
  • 沈阳软件公司 网站制作舞美设计制作公司