您的位置:首页 > 其它

uva10003

2016-04-21 14:18 155 查看
题意: 经典区间dp 类似 矩阵链乘 和石子合并

思路: dp

AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
const int maxn=105;

int dp[maxn][maxn];
int num[maxn];

int main(){
//  freopen("1.txt","r",stdin);
int l,n;
while(scanf("%d",&l)!=EOF && l){
scanf("%d",&n);
for(int i=1; i<=n; i++) scanf("%d",&num[i]);
num[0]=0;
num[n+1]=l;
for(int i=0; i<=100; i++){
for(int j=0; j<=100; j++) {
dp[i][j]=99999999;
}
}
for(int i=0; i<=n; i++) dp[i][i+1]=0;
for(int i=n; i>=0; i--){
for(int j=i+1; j<=n+1; j++){
for(int k=i+1; k<j; k++){
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+(num[j]-num[i]));
}
}
}
printf("The minimum cutting is %d.\n",dp[0][n+1]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: