钢条切割1(15章:动态规划)。。。2014.5.21
2014-05-21 14:39
190 查看
钢条的切割问题:
给定一个长度为n的钢条,和一个价格表pi(i=1 2 3 4 5.。。)
求出切割钢条的方案,使得销售的收益最大。
/*
钢条切割问题的自顶向下的递归实现问题
*/
#include <STDLIB.H>
#include <STDIO.H>
#include <MATH.H>
#define N 1000
int maxim( int a,int b)//求两个数大小的问题
{
if(a>=b)
return a;
else
return b;
}
//P
为:数组下标i为长度i,数组里的数字为价格Pi。
int CUT_ROD(int P
,int n)//递归求最大收益的问题。
{
int q,i;
if(n==0)
return 0;
q=-32768;//将最大收益q初始化.
for(i=1;i<=n;i++)//
q=maxim(q,P[i]+CUT_ROD(P,n-i));
return q;
}
void main()
{
int P
,i,q;
for(i=0;i<N;i++)
P[i]=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;
q=CUT_ROD(P,5);
printf("%d",q);
}
给定一个长度为n的钢条,和一个价格表pi(i=1 2 3 4 5.。。)
求出切割钢条的方案,使得销售的收益最大。
/*
钢条切割问题的自顶向下的递归实现问题
*/
#include <STDLIB.H>
#include <STDIO.H>
#include <MATH.H>
#define N 1000
int maxim( int a,int b)//求两个数大小的问题
{
if(a>=b)
return a;
else
return b;
}
//P
为:数组下标i为长度i,数组里的数字为价格Pi。
int CUT_ROD(int P
,int n)//递归求最大收益的问题。
{
int q,i;
if(n==0)
return 0;
q=-32768;//将最大收益q初始化.
for(i=1;i<=n;i++)//
q=maxim(q,P[i]+CUT_ROD(P,n-i));
return q;
}
void main()
{
int P
,i,q;
for(i=0;i<N;i++)
P[i]=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;
q=CUT_ROD(P,5);
printf("%d",q);
}
相关文章推荐
- 钢条切割3(15章:动态规划)。。。2014.5.26
- 钢条切割4(15章:动态规划)。。。2014.5.26
- 算法导论15章 动态规划 之 钢条切割
- 钢条切割2(15章:动态规划)。。。2014.5.26
- (动态规划) 算法导论_钢条切割问题.(补)
- 动态规划 -- 钢条切割
- c++使用动态规划dp(自底向上)重构解决钢条切割输出最大收益和切割方案及运行实例结果
- 《算法导论》学习笔记——钢条切割,斐波那契数列(动态规划)
- 动态规划-钢条切割问题
- 算法实践篇-钢条切割问题-动态规划
- c++使用动态规划dp(自底向上)重构解决钢条切割输出最大收益和切割方案及运行实例结果
- 动态规划-钢条切割
- c++使用动态规划dp(自底向上)重构解决钢条切割输出最大收益和切割方案及运行实例结果
- 算法导论动态规划钢条切割
- [置顶] 动态规划之切割钢条
- 算法导论:第15章 动态规划_1钢条切割
- 算法导论-第15章-动态规划:钢条切割问题自底向下方法C++实现
- 动态规划练习之钢条切割
- 动态规划——钢条切割
- 算法导论:第15章 动态规划_1_2钢条切割_动态规划的两种解法