农夫需要总长为L的N块木头,每块木头长度为Li(Li为整数,且∑Li=L)。农夫购买了长度为L的木头,请人锯成N块,假设锯木的酬金为这段木头的长度,请编写程序帮助农夫计算将木头锯成N块的最少花
#include
#include
void puts(int a[],int N)
{
printf("请分别输入要锯成的%d块木头的长度:\n",N);
for(int i=0;i
}
void paixu(int a[],int N)
{ int max=a[0],k;
for(int i=1;i
if(a[i]>max) {k=a[i];a[i]=a[0];max=k;}
}
}
void acts(int a[],int N,int k)
{ int sum=0,total=0;
for(int i=0;i
sum=a[i]+a[i+1];//每次取出最小的两位
total=total+sum;//将和加入到总花费中
for(int j=i+2;j
if(sum>a[j])
a[j-1]=a[j];
else
{
a[j-1]=sum;
break;
}
}
if(N==j)
a[j-1]=sum;
}
printf("经计算得出,将总长为%d的木块锯成%d块的最少花费为:\n%d\n",k*N,N,total);
}
int main()
{
int k , l , *p ;
printf("请输入Li的长度:\n");
scanf("%d",&k);
p=(int *)malloc(sizeof(int)*k);
printf("请输入N的值:\n");
scanf("%d",&l);
puts(p, l);
paixu(p, l);
acts(p, l , k );
return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
