#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
const int maxn=1000+5;
int L,N,C[maxn],d[maxn][maxn];
int dp(int left,int right)
{
int& ans=d[left][right];
if(ans!=-1) return ans;
ans=(1<<30);
int ok=0; //标记改段是否可以被锯掉
for(int i=0;i<N;i++)
if(left<C[i]&&right>C[i])
{
ans=min(ans,dp(left,C[i])+dp(C[i],right)+right-left);
ok=1;
}
return ok?ans:ans=0;
}
int main()
{
while(cin>>L&&L)
{
cin>>N;
for(int i=0;i<N;i++) cin>>C[i];
memset(d,-1,sizeof(d));
printf("The minimum cutting is %d.\n",dp(0,L));
}
return 0;
}
UVA 1625 Color Length
最新推荐文章于 2019-04-29 13:34:38 发布