用动态规划法设计算法有一根长n厘米的金属棒,现在要切割成几段零售.i 厘米(i = 1,&
来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/11/20 03:37:57
用动态规划法设计算法
有一根长n厘米的金属棒,现在要切割成几段零售.i 厘米(i = 1, 2, ... , n)长的金属棒零售价为pi.n和切割后每段的长度都为整数.
使用动态规划法设计一个算法,输入金属棒长度n和零售价表p1, ... , pn,计算使零售价格的和最大的切割方法.
零售价表的例子如图:
不用给出代码,有想法就行.
有一根长n厘米的金属棒,现在要切割成几段零售.i 厘米(i = 1, 2, ... , n)长的金属棒零售价为pi.n和切割后每段的长度都为整数.
使用动态规划法设计一个算法,输入金属棒长度n和零售价表p1, ... , pn,计算使零售价格的和最大的切割方法.
零售价表的例子如图:
不用给出代码,有想法就行.
怎么又问了同样的问题啊.这是我刚刚的回答
这个题目可以看作是个完全背包问题的变形.
转化成一个体积为n的背包,向里面放东西,使得所有东西体积之和恰好为n(正统的背包问题是不大于n),而且总的价值最大.其中每件编号为i的东西体积为c[i](长度),价格为w[i](零售价).
这个问题非常类似于01背包问题,所不同的是每种物品有无限件.也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种.如果仍然按照解01背包时的思路,令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值.仍然可以按照每种物品不同的策略写出状态转移方程,像这样:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i] (其中0
这个题目可以看作是个完全背包问题的变形.
转化成一个体积为n的背包,向里面放东西,使得所有东西体积之和恰好为n(正统的背包问题是不大于n),而且总的价值最大.其中每件编号为i的东西体积为c[i](长度),价格为w[i](零售价).
这个问题非常类似于01背包问题,所不同的是每种物品有无限件.也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种.如果仍然按照解01背包时的思路,令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值.仍然可以按照每种物品不同的策略写出状态转移方程,像这样:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i] (其中0