动态规划—钢管切割问题
题目描述
给一条钢管,切割成不同长度的钢管(也可以不切割),不同的钢管长度对应不同的价值,求这根钢管获得的最大价值。
输入
第一行包含一个正整数L,为钢管的长度。
第二行包含L个正整数a1…aL,为长度从1到L的钢管对应的价值。
输出
输出一行,为钢管能获得的最大价值。
输入样例1
5
1 2 4 8 16
输出样例1
16
输入样例2
5
1 10 14 8 16
输出样例2
24
数据范围与约束
1<=a,L<=10000
思路分析
对于长度为L的钢管,把它分割成L个子问题,每一个长度为i(1<=i<=L)的子钢管为一个子问题。
对于每一个长度为i的钢管,从j处切割,遍历j从1到i,左边不再切割,右边可以进行切割,找最大的切割方式
AC代码
#include<stdio.h>
int value[10010];
int dp[10010]={0};
int max(int a,int b);
void cut_rod(int value[],int l);
int main()
{int i,l;scanf("%d",&l);for(i=1;i<=l;i++)scanf("%d",&value[i]);cut_rod(value,l);printf("%d",dp[l]);return 0;
}
void cut_rod(int value[],int l)
{int i,j,q;for(i=1;i<=l;i++){q=-1;for(j=1;j<=i;j++)q=max(q,value[j]+dp[i-j]);dp[i]=q;}
}
int max(int a,int b)
{return a>b?a:b;}
动态规划—钢管切割问题相关推荐
- 动态规划——钢管切割最小代价问题
一.问题描述: 设有一根长度为L的钢条,在钢条上标有n个位置点(p1,p2,......,pn).现在需要按钢条上标注的位置将钢条切割为n+1段,每次切割的代价为所切的钢条长度,试求在所有的切割方案中 ...
- 【算法导论】动态规划之“钢管切割”问题
动态规划,其实跟分治法有些相似,基本思想都是将复杂的问题分成数个简单的子问题,然后再去解决.它们的区别在于,分治法关注的子问题不相互"重叠",而动态规划关注的子问题,多是相互&qu ...
- Day2补充:钢管切割问题
转自:https://blog.csdn.net/cyp331203/article/details/42806159 Day2补充:钢管切割问题 一. 问题背景: 某公司生产长钢管,然后一般,会将钢 ...
- DP之钢管切割,最长回文字符串,最长公共子串
在做LeetCode第3题的时候,用到了DP,但是自己对DP还是不了解,所以翻开算法导论,开始看动态规划喽,学好动态规划,走遍天下都不怕. 钢管切割 对于一根长n米的钢管,每个长度的价格不一样,对于长 ...
- 动态规划 — 钢条切割问题
动态规划: 什么是动态规划? 动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息.在求解任一子问题时 ...
- 钢管切割 2018-2-5
钢管切割原始问题: 某公司生产长钢管,然后一般,会将钢条切断,变成不同长度,然后去售卖.其中有个问题是,不同长度的钢管的售价是不一样的,但是它们并不是完全按照比例来,比如2米的钢管售价要比3米的钢管售 ...
- 算法导论 动态规划钢条切割问题 C语言
动态规划钢条切割问题 动态规划(dynamic programming)与分治法类似.分治策略将问题划分为互不相交的子问题,递归求解子问题,再将子问题进行组合,求解原问题.动态规划应用于子问题重叠的情 ...
- 算法学习笔记----用动态规划解决钢管切割问题
(说明:由于CSDN的博客中不能添加下标等特殊符号,所以部分内容使用截图的形式) 通过对问题进行高度抽象,现在我们的问题,就是要递归地求解r n 的最大值,下面采用的是一种自顶向下的递归方法: int ...
- 动态规划——钢条切割
有一根钢条,和他的长度价格表,真么样切割才能使得售出的钢条收益最大. 不考虑钢条的切割损耗. 输入n 表示钢条的长度 价格表p[i] 表示长度为i的钢条出售的价格 ------------------ ...
最新文章
- 换个角度聊系统稳定性建设(2021版)
- xshell 图形化连接ubuntu
- unity如何停止不用字符串方式开启协程的方法
- 43、Java动态代理一——动态类Proxy的使用
- 报错,o.h.engine.jdbc.spi.SqlExceptionHelper : Data truncation: Data too long for column ‘verify_msg‘
- paip.c#.net未能找到任何资源
- c语言运行全屏,怎么用代码控制C源程序运行时窗口是全屏的?
- 省市县乡四级联动java代码,jQuery省市区街道四级联动代码
- android badgeview activity不显示,关于BadgeView遇到的一个奇怪的问题和解决办法
- 电阻的耐功率冲击与耐电压冲击
- 广东移动待遇及详细工作经历 (转)
- mysql c dll_libmysql_c.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
- 卷积神经网络是如何实现不变性特征提取的?
- C语言——第三章:C语言程序设计
- TOMCAT服务器的安装与配置
- 使用PfamScan的API对蛋白结构域进行注释
- 【渝粤题库】陕西师范大学180209 金融学作业(专升本)
- Java 集合深入理解(9):Queue 队列
- 熊猫烧香的病毒制作源码
- 计算机网络技术毕业生实习报告_计算机网络专业毕业生实习报告
热门文章
- 菜单编写(VC_Win32)
- Windows7和Windows10设置屏保保护程序-冒泡
- Nginx中文域名配置
- 微信小程序上传图片至服务器Springboot接收格式的问题
- [转] 治脚气;;咽痒咳嗽;睡眠磨牙;;绝招治痔疮;;乳汁不足方;;;打呼噜;;男人一周补肾食谱;; (百年难遇的好偏方)...
- 搜索引擎快速排名的黑帽技术【揭秘SEO黑帽技术】
- 2022年终总结:给心一个立住的理由【失败后自我恢复、压力中自我拯救】
- 上三角矩阵判定-c++
- 字符编码--字符与数字的对应
- HTTPServerMock从手工到平台的演变