问题:给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,...,n),求切割钢条方案,使得销售收益rn最大。如果长度为n英寸的钢条的价格pn足够大,最优解可能就是完全不需要切割。
方法一:递归
从上而下把所有的全部搜索一遍
int CUT_ROD(int p[],int n)
{
if(n==0)
return 0;
int q=INT_MIN;
for(int i=1;i<=n;i++)
{
q=max(q,p[i]+CUT_ROD(p,n-i));
printf("n=%d",n-i);
}
printf(" q=%d",q);
printf("\n");
return q;
}
方法二:自顶而下的保存已计算子问题的递归复杂度o(n^2)
int a(int p[],int n,int r[])
{
int q;
if(r[n]>0)
return r[n];
if(n==0)