uva 10003 一根木棍上有n个切割点 每次选一个点切割,求总切割费用最小 区间DP

来源:互联网 发布:淘宝雷蛇专卖店 编辑:程序博客网 时间:2024/05/16 11:28
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int dp[66][66],d[66];int main(){int l,n;while( scanf("%d", &l) == 1 && l ){scanf("%d", &n);for(int i=1;i<=n;i++) scanf("%d", &d[i]);d[0]=0;  d[n+1]=l;memset(dp,0x3f,sizeof(dp));for(int i=0;i<n+1;i++) dp[i][i+1]=0;for(int len=2;len<=n+1;len++){for(int i=0;i+len<=n+1;i++){int j=i+len;for(int k=i+1;k<j;k++)dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+(d[j]-d[i]));}}printf("The minimum cutting is %d.\n",dp[0][n+1]);}}

阅读全文
0 0