#include<stdio.h>
#include<stdlib.h>
void puts(int a[],int N)
{
printf("请分别输入要锯成的%d块木头的长度:\n",N);
for(int i=0;i<N;i++)
scanf("%d",&a[i]);
}
void paixu(int a[],int N)
{ int max=a[0],k;
for(int i=1;i<N;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<N-1;i++)
{
sum=a[i]+a[i+1];//每次取出最小的两位
total=total+sum;//将和加入到总花费中
for(int j=i+2;j<N;j++)//将sum的值插入到已排序的序列中
{
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;
}
农夫需要总长为L的N块木头,每块木头长度为Li(Li为整数,且∑Li=L)。农夫购买了长度为L的木头,请人锯成N块,假设锯木的酬金为这段木头的长度,请编写程序帮助农夫计算将木头锯成N块的最少花
于 2018-06-25 09:31:13 首次发布