1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int m[100][100],l,n,a[100],c[100],i,j,r,sum; 6 while(scanf("%d",&l)!=EOF&&l) 7 { 8 scanf("%d",&n); 9 for(i=0;i<n;i++) 10 scanf("%d",&c[i]); 11 c[n]=l;a[0]=c[0]; 12 for(i=1;i<=n;i++) 13 a[i]=c[i]-c[i-1]; 14 memset(m,0,sizeof(m)); 15 for(r=1;r<=n;r++) 16 for(i=0;i<n;i++) 17 { 18 j=i+r;sum=0; 19 for(int k=i;k<=j;k++) 20 sum+=a[k]; 21 m[i][j]=m[i][i]+m[i+1][j]+sum; 22 for(int k = i+1;k<j;k++) 23 { 24 int temp=m[i][k]+m[k+1][j]+sum; 25 if(temp<m[i][j]) 26 { 27 m[i][j]=temp; 28 } 29 } 30 } 31 printf("The minimum cutting is %d. ",m[0][n]); 32 } 33 return 0; 34 }