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

济南教育平台网站建设动态ip如何做网站

济南教育平台网站建设,动态ip如何做网站,有没有专门做儿童房的网站,怎么添加网站白名单递归求解 钢条切割问题是《算法导论》上动态规划部分的第一个例题。这里就以算法导论上的例子来讨论这个问题。 例如当我们切割n4的钢条时,切割情况如下: 用递归方法解决这个问题时,代码如下(以n4为例): …

递归求解

钢条切割问题是《算法导论》上动态规划部分的第一个例题。这里就以算法导论上的例子来讨论这个问题。

 例如当我们切割n=4的钢条时,切割情况如下:

 用递归方法解决这个问题时,代码如下(以n=4为例):

#include <bits/stdc++.h>
using namespace std;// 价格数组
int val[11] = {0,1,5,8,9,10,17,17,20,24,30};int cut_rod(int p[],int n)
{if(n == 0) return 0; // 边界条件int q = -1;for(int i = 1;i <= n;i++)q = max(q,p[i]+cut_rod(p,n-i));return q;
}int main()
{cout << cut_rod(val,4) << endl;return 0;
}

其中 for(int i = 1;i <= n;i++) q = max(q,p[i]+cut_rod(p,n-i)) :

p[i]+cut_rod(p,n-i)为前 i 个长度不切割,后面 n-i 个长度切割所能取得的最大值。

动态规划求解

实际运行的时候我们会发现当n的规模偏大的时候,再使用递归的话,程序很有可能超过一个小时的运行时长。所以我们展示如何将这个钢条切割问题转换为一个更高效的动态规划算法。

朴素递归算法之所以效率很低,是因为它反复求解相同的子问题。因此动态规划方法仔细安排求解顺序,对每个子问题只求解一次,并将结果保存下来。所以我们看出:动态规划是付出额外的空间来节省计算时间。

这一题可以用一个数组 f[] ,其中 f[i] 表示长度为 i 的钢条能得到的最大的价值。因此状态转移方程就能写为:

 其中,val(j) 表示前 j 个长度不切割的钢条的价值。

代码实现:

#include <bits/stdc++.h>
using namespace std;const int N = 11;int n;
int val[11] = {0,1,5,8,9,10,17,17,20,24,30}; // 价格数组
int f[N];int main()
{n = 10;for(int i = 1;i <= n;i++){for(int j = 1;j <= i;j++){f[i] = max(f[i],val[j]+f[i-j]);}}cout << "最大价值:" << f[n] << endl;return 0;
}

运行结果:

构造最优解

我们还可以拓展动态规划算法,使之对每个子问题不仅保存最大价值,而且给出切割方案。

对于长度为j的钢条,我们保存最优解对应的第一段钢条的切割长度x[j]。接着就可以循环求出长度为j-x[j]的切割方案。

代码实现:

#include <bits/stdc++.h>
using namespace std;const int N = 11;int n;
int val[11] = {0,1,5,8,9,10,17,17,20,24,30}; // 价格数组
int f[N];
int x[N];int main()
{n = 10;for(int i = 1;i <= n;i++){for(int j = 1;j <= i;j++){if(f[i] < val[j]+f[i-j]) x[i] = j; // 记录第一次切割的长度f[i] = max(f[i],val[j]+f[i-j]);}}cout << "最大价值:" << f[n] << endl;// 构造最优解cout << "切割方案:";int ll = n;while(ll > 0){cout << x[ll] << " ";ll -= x[ll];}cout << endl;return 0;
}

运行结果:


文章转载自:

http://IDdlUFWJ.fpzpb.cn
http://IuHEMzV9.fpzpb.cn
http://EMhH1Ksl.fpzpb.cn
http://PhkQjUzT.fpzpb.cn
http://BoHse3D7.fpzpb.cn
http://rcqWMfvu.fpzpb.cn
http://7LeVhb6V.fpzpb.cn
http://fbvuu2Ng.fpzpb.cn
http://GaBCUmsQ.fpzpb.cn
http://Jf2CdpVF.fpzpb.cn
http://Jb7XyCi2.fpzpb.cn
http://bzG9xbTa.fpzpb.cn
http://dCa0tisG.fpzpb.cn
http://sPsPl1Cr.fpzpb.cn
http://Tb78OZc3.fpzpb.cn
http://2wn4z5Ml.fpzpb.cn
http://RIo98FET.fpzpb.cn
http://hJ9KixVY.fpzpb.cn
http://1Sf9qALw.fpzpb.cn
http://J6oF18Me.fpzpb.cn
http://K0ugtkGg.fpzpb.cn
http://jOWumiZ2.fpzpb.cn
http://rm071QBi.fpzpb.cn
http://pGD2M23m.fpzpb.cn
http://gRfCdnwT.fpzpb.cn
http://LstKfx7z.fpzpb.cn
http://1qIPcx9C.fpzpb.cn
http://fSgq6G4s.fpzpb.cn
http://nvnvlGpX.fpzpb.cn
http://EzdiwdMu.fpzpb.cn
http://www.dtcms.com/wzjs/746863.html

相关文章:

  • 苏州集团网站制作设计怎么用手机建网站
  • 济南建设工程信息网站没有建设的网站不能申请微信支付吗
  • 毕业设计做网站还是系统好域名解析到wordpress
  • 成都家具网站建设如何做网站推广达到好的效果
  • 网站建设论文ppt建筑设计公司网站模板
  • 网站设计公司发展在越南注册公司需要什么条件
  • 做网站申请域名的流程网站做现金抽奖 能通过
  • iis为网站子目录绑定二级域名做图片的网站
  • 试用网站如何做网站建设任职要求
  • 网站的开发费用吗做网站的技术哪个简单
  • 百度推广包做网站吗文字生成网址
  • 潍坊制作网站公司淮南发布网
  • 中国seo网站微信网站需要一个域名要怎么做
  • 德阳网站优化中国建设银行官网招聘
  • 韩国美食做视频网站有哪些个人网站备案名称例子
  • 泰安建设厅网站推广网站设计推广方案
  • 永川做网站做电影网站会有什么惩罚
  • 网站建设丿金手指专业百度推广怎么添加关键词
  • 做gif网站网站开发选题依据
  • wordpress 4.7.11漏洞seo优化自学
  • 网站建设基本流程备案中国苏州网站
  • 索菲亚全屋定制官方网站云南省建设工程质量协会网站
  • 外贸网站建设公司方案做网站链接
  • 中国建设网官方网站e路护航wordpress 历史
  • 做电子书的网站很有名后来被关闭了软件公司门户网站模板
  • 网站开发主页家居网站建设策划开发
  • 做趣味图形的网站网站免费制作平台
  • 公司网站服务器维护设计公司起名字寓意好的字
  • 如何做中介网站wordpress中主题页脚太高怎么办
  • 淮安网站建设多少钱微信开发 网站备案吗