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

盐都区城乡建设局网站阿里云网站备份

盐都区城乡建设局网站,阿里云网站备份,html模板库,坪山附近公司做网站建设哪家效益快今天开始《动态规划#xff1a;完全背包》的学习#xff01; 前言#xff1a; 完全背包和01背包的区别在于完全背包里的物品能无限次使用#xff0c;01背包只能用一次。 第一题#xff1a; 简介#xff1a; 本题是纯完全背包的使用。可以看一看和01背包的区别。 代码…今天开始《动态规划完全背包》的学习 前言 完全背包和01背包的区别在于完全背包里的物品能无限次使用01背包只能用一次。 第一题 简介 本题是纯完全背包的使用。可以看一看和01背包的区别。 代码实现 #include iostream #include vector using namespace std; int test_bag(vectorint weight, vectorint value, int bagWeight){vectorint dp(bagWeight 1, 0);for(int i0;iweight.size();i){for(int jweight[i];jbagWeight;j){dp[j] max(dp[j],dp[j - weight[i]] value[i]);}}return dp.back(); } int main(){vectorint weight;vectorint value;int N,V;cinNV;for(int i0;iN;i){int w;int v;cinwv;weight.push_back(w);value.push_back(v);}couttest_bag(weight,value,V)endl;;return 0; } 第二题 简介 本题是对完全背包的场景应用题在本题与下一题我们将会了解 如果求组合数无需排序就是外层for循环遍历物品内层for遍历背包。 如果求排列数需要排序就是外层for遍历背包内层for循环遍历物品。 先看本题动态规划五部曲 1.确定dp数组的含义和下标     dp[j]:表示当金额为j时所需硬币有几种组合 2.确定递归公式    dp[j] dp[j-coins[i]];  3.确定dp数组的初始化     dp[0] 1; 4.遍历数组 5.查看dp数组是否符合要求 代码实现  //dp[j]表示凑成j有几种方式int change(int amount, vectorint coins) {vectorint dp(amount1,0);dp[0] 1;for(int i0;icoins.size();i){for(int jcoins[i];jamount;j){dp[j] dp[j-coins[i]];}}return dp.back();} 第三题 简介 大家通过示例可以看出本题对数组元素的顺序有要求所以本题是求排列数。 同样动态规划五部曲 1.确定dp数组的含义及下标 dp[j]  表示数为j时有几种组合方式 2.确定递归公式 dp[j] dp[j-nums[i]]; 3.确定dp数组的初始化 dp[0]1; 4.确定遍历的顺序注意本题的遍历顺序 for(int j0;jtarget;j){ // 背包for(int i0;inums.size();i){ //物品if (j - nums[i] 0 dp[j] INT_MAX - dp[j - nums[i]])dp[j] dp[j-nums[i]];}for(int i0;idp.size();i){coutdp[i] ;}coutendl;} 个数可以不限使用说明这是一个完全背包。 得到的集合是排列说明需要考虑元素之间的顺序。 本题要求的是排列那么这个for循环嵌套的顺序可以有说法了。 在上一题中就已经讲过了。 如果求组合数就是外层for循环遍历物品内层for遍历背包。 如果求排列数就是外层for遍历背包内层for循环遍历物品。 如果把遍历nums物品放在外循环遍历target的作为内循环的话举一个例子计算dp[4]的时候结果集只有 {1,3} 这样的集合不会有{3,1}这样的集合因为nums遍历放在外层3只能出现在1后面 所以本题遍历顺序最终遍历顺序target背包放在外循环将nums物品放在内循环内循环从前到后遍历。 5.确定dp数组符合要求 代码实现  int combinationSum4(vectorint nums, int target) {vectorint dp(target1,0);dp[0]1;for(int j0;jtarget;j){ // 背包for(int i0;inums.size();i){ //物品if (j - nums[i] 0 dp[j] INT_MAX - dp[j - nums[i]])dp[j] dp[j-nums[i]];}for(int i0;idp.size();i){coutdp[i] ;}coutendl;}return dp.back();} 总结  今天总体来说比昨天要好今天接受的快并且后两道题了解 如果求组合数就是外层for循环遍历物品内层for遍历背包。 如果求排列数就是外层for遍历背包内层for循环遍历物品 之后都可以A出来。继续加油
http://www.yutouwan.com/news/126919/

相关文章:

  • 网站建设中怎么编辑图片软件开发费用一览表
  • 手机网站定制 杭州为什么网站后台google登陆不了 firefox可以
  • 网站开发调研问卷织梦做单页面网站
  • 农产品网站建设案例公司网站设计要求
  • 学做网站从什么开始网站群建设系统
  • 建设商业网站网站二次开发多少钱
  • 神华科技 网站建设wordpress无法更换主题
  • 网站pc和手机端开发 app
  • 深圳手机网站建设服务wordpress磁力插件
  • 上海建网站哪家好专门做问卷的调查的网站
  • 河北石家庄建设网站如何制作投票小程序
  • 做网络销售怎么建立网站django企业网站源码
  • 手机网站建设方案doc国内四大高端建站公司
  • 赣州网站建设顺企网南京网站外包
  • 网站的登录弹窗怎么做淘宝的好券网站怎么做
  • 网站设计与开发未来发展方向wordpress网站类型
  • 建设一个网站的具体步骤做亳州旅游网站的目的
  • 以营销导向型建设网站方案站内推广的方法
  • 一键开启网站北京有哪些不错的互联网公司
  • 利用论坛推广网站优质做网站费用
  • 搭建网站需要注意什么网站策划与建设阶段
  • 建设网站的企业乱码链接怎么用
  • 坪地网站建设包括哪些软件开发模型名词解释
  • 二手交易网站建设方案ppt辽宁建设工程信息网场内业绩什么意思
  • 微信网站开发服务网络系统分类
  • 专做土特产的网站广告公司企业简介
  • 深圳做二维码网站建设素材网站有哪些
  • 上海网站设计哪家强wordpress腾讯云CDN配置
  • 关于网站建设的工作计划seo技巧课程
  • 免费永久网站制作上线了做的网站可以登陆