题目的意思是,在固定的几个点上切割,按什么顺序割,哪些点先割 ,排列下去 总的费用最少,这样的话和长度什么的都没关系啊,得到的结果就是一个固定的最优排列。
回复 8楼 拉链
#include<stdio.h>int main()
{
int L,n,i,min,h,sum=0,m,a[501],b[501],c[501],j,k;
printf("输入钢管的长度:");
scanf("%d",&L);
printf("输入切割的次数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("输入切割位置:");
scanf("%d",&a[i]);
}
b[0]=a[0];
for(i=1;i<n;i++)
{
b[i]=a[i]-a[i-1];
}
b[i]=L-a[i-1];
k=n;
for(m=0;m<n;m++)
{
for(i=0;i<k;i++)
{
c[i]=b[i]+b[i+1];
}
min=L;
for(i=0;i<k;i++)
{
if(c[i]<min)
{
min=c[i];
h=i;
}
}
sum=sum+min;
for(j=0;j<k;j++)
{
if(h==j)
b[j]=min;
if(j<h)
b[j]=b[j];
if(j>h)
b[j]=b[j+1];
}
k=k-1;
}
printf("输出最少花费:%d\n",sum);
return 0;
}