当前位置:网站首页>【动态规划----钢条切割问题】
【动态规划----钢条切割问题】
2022-07-27 05:20:00 【月光在发光】
介绍
在算法导论中的第15章,经典的动态规划样题:钢条切割问题,相较于在文中给出的伪代码,本文中的代码,更完善地解决了切割问题.文中的代码不仅针对两段的切割问题,考虑了可能出现2段切割事件,还解决了当钢条长度超出最大单价长度的情况,给出的动态规划公式为:
dp[i]=max{p[i],dp[i-1]+dp[1],dp[i-2]+dp[2]…dp[i-i/2]+dp[i/2]} i<=n i为切割钢条长度,n为钢条的单位价格数目
dp[i]=max{dp[i-1]+dp[1],dp[i-2]+dp[2]…dp[i-i/2]+dp[i/2]} i>n
代码
#include <iostream>
#include<vector>
//#include<string>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//p:1-10的价格 n:切割条的长度
vector<int> max_gangtiao(vector<int> p,int n)
{
vector<int> dp(n+1);
for(int i=0;i<=n;i++)
{
if(i<=10)//当切割的长度小于10时,需要和价格p中的价格进行对比,大于长度10时,只需找到最大的组合即可
{
dp[i]=p[i];
}
for(int j=0;j<=i/2;j++)
{
dp[i]=max(dp[i],dp[i-j]+dp[j]);
}
}
return dp;
}
int main(int argc, char *argv[]) {
vector<int> p={0,1,5,8,9,10,17,17,20,24,30};//价格表
int n=20;//钢条长度
vector<int> result=max_gangtiao(p,n);
for(int i=0;i<=n;i++)
cout<<result[i]<<endl;
//若是需要钢条的切割方法,可以使用组合的方式,尝试找出,对应长度的最有组合,即钢条的每个单独的切割长度
return 0;
}
边栏推荐
猜你喜欢

A photo breaks through the face recognition system: you can nod your head and open your mouth, netizens

2022.6.10 stm32mp157 serial port clock learning

11. Gradient derivation of perceptron

Live Home 3D Pro室内家居设计工具

PS 2022 updated in June, what new functions have been added

STM32-红外遥控

李宏毅 2020 深度学习与人类语言处理 DLHLP-Coreference Resolution-p21

16. Over fitting and under fitting

C语言扫雷最新 递归展开 超详解(附源码)

安装windows下的redis
随机推荐
【12】理解电路:从电报机到门电路,我们如何做到“千里传信”?
Day 2. Depressive symptoms, post-traumatic stress symptoms and suicide risk among graduate students
韦东山 数码相框 项目学习(二)在LCD上显示中文字符
古老的艺术-用好长尾关键词
【Arduino】重生之Arduino 学僧(1)
Day 3. Suicidal ideation and behavior in institutions of higher learning: A latent class analysis
malloc和new之间的不同-实战篇
Live Home 3D Pro interior home design tool
芯片、存储器及其关键指标简述 一
小技巧-彻底删除U盘中的文件
超强远程连接管理工具:Royal TSX
C语言扫雷最新 递归展开 超详解(附源码)
韦东山 数码相框 项目学习(四)简易的TXT文档显示器(电纸书)
方差与协方差
AE 3D粒子系统插件:Trapcode Particular
[MySQL learning] 8
19. Up and down sampling and batchnorm
面试常问Future、FutureTask和CompletableFuture
Unittest套件与运行器
C语言--字符串操作函数与内存操作函数