#include<string.h>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<iostream>
#include<algorithm>
#define INF 1<<20
using namespace std;
int main()
{
int length,n,i,j,x,y,temp,l,k,tt,sum;
int t[51][51],p[51];
while(scanf("%d",&length)&&length)
{
cin>>n;
y=0;
for(i=1;i<=n;i++)
{
cin>>x;
p[i]=x-y;
y=x;
}
p[i]=length-y;
n=i;
for(i=0;i<=n;i++)
t[i][i]=0;
for(l=2;l<=n;l++)
{
for(i=1;i<=n-l+1;i++)
{
j=i+l-1;
t[i][j]=INF;
for(k=i;k<=j-1;k++)
{
temp=t[i][k]+t[k+1][j];
sum=0;
for(tt=i;tt<=j;tt++)
sum+=p[tt];
temp+=sum;
if(temp<t[i][j])
t[i][j]=temp;
}
}
}
printf("The minimum cutting is %d.\n",t[1][n]);
}
return 0;
}
UVA 10003 切割能量棒
最新推荐文章于 2025-03-26 19:37:45 发布