博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划算法2
阅读量:6555 次
发布时间:2019-06-24

本文共 941 字,大约阅读时间需要 3 分钟。

    今天用了递归来解决昨天钢管的最有切割问题,代码如下

#include <iostream>

#include <algorithm>
#include <time.h>
using namespace std;

int cut_rod(int *p, int n);

int p[1000];
int main()
{
clock_t start, finish;
double duration = 0.0;
memset(p, 0, sizeof(p));
p[0]=0;
p[1]=1;
p[2]=5;
p[3]=8;
p[4]=9;
p[5]=10;
p[6]=17;
p[7]=17;
p[8]=20;
p[9]=24;
p[10]=30;
int q = 0, n = 0; //q为最大价格,n为钢材长度,p数组为价格目录
cout << "请输入钢材的长度:";
cin >> n;
start = clock();
q = cut_rod(p, n);

cout << "最大收益为 "<< q << endl;

finish = clock();
duration = (double)(finish - start)/CLOCKS_PER_SEC;
cout << "it takes "<< duration << "seconds" <<endl;
return 0;
}

int cut_rod(int *p, int n)

{
int q = -1e8;

if (n == 0)

{
return 0;
}
else
{
for(int i = 1; i <= n; i++)
{
q = max(q, p[i] + cut_rod(p, n-i));
}
}

return q;

}

 

如果各位有好的计算时间的函数,或给数组前几个元素赋值而使后面全为0的函数麻烦告知下,哪里有写的不好的地方请指正。

这个算法的时间复杂度很高,远没有前面那个算法好,当n=30是计算时间达到了2分多钟,前面那个只要0.00000秒、、、、贴图如下,正在学习改进方法

转载于:https://www.cnblogs.com/yican/p/3302635.html

你可能感兴趣的文章
Android webview使用详解
查看>>
业务对象和BAPI
查看>>
程序源系统与当前系统不一致:Carry out repairs in non-original systems only if urgent
查看>>
微软职位内部推荐-Senior Software Engineer
查看>>
程序中的魔鬼数字
查看>>
SVN高速新手教程
查看>>
session cookie
查看>>
如何在Vblock里配置Boot from SAN
查看>>
ZBar之ZBarReaderViewController
查看>>
Nuget~管理自己的包包~丢了的包包快速恢复
查看>>
Hadoop单机模式安装-(3)安装和配置Hadoop
查看>>
$.extend({},defaults, options) --(初体验三)
查看>>
自己主动瀑布流布局和实现代码加载
查看>>
maven的一些依赖
查看>>
腾讯云短信服务使用记录与.NET Core C#代码分享
查看>>
jQuery hover() 方法
查看>>
sql语句
查看>>
android 一步一步教你集成tinker(热修复)
查看>>
到底有多少内存
查看>>
centos7.3 安装ovirt-engine4.0 版本
查看>>