#include <stdio.h>
#include <limits.h>
int p[11]={0,1,5,8,9,10,17,17,20,24,30};
int r[11],s[11];
int max(int a,int b)
{
return a>=b?a:b;
}
void bottomUpCutRod(int n)
{
r[0]=0;
int q;
for(int i=1;i<=n;i++)
{
q=INT_MIN;
for(int j=1;j<=i;j++)
{
if(q<p[j]+r[i-j])
{
s[i]=j;
q=p[j]+r[i-j];
}
}
r[i]=q;
}
}
void printS(int n)
{
while(n>0)
{
printf("%d ",s[n]);
n-=s[n];
}
printf("\n");
}
int main()
{
bottomUpCutRod(7);
printf("%d\n",r[7]);
printS(7);
getchar();
}
算法导论 钢条切割问题
最新推荐文章于 2022-10-01 21:01:52 发布