标签:表示 代码 i+1 题意 解法 turn 区间 区间dp pre
排成一排的石子,每次合并相邻两堆并由一定的代价,求合并成一堆的最小代价
dp[i,j]=min(dp[i,k]+dp[k+1,j]+sum(i...j))
int solve(){
//dp[i][i]=0
//dp[i][i+1]=sum[i+1]-sum[i-1]
for(int i=1;i<=N;i++){
dp[i][i]=0;
}
for(int i=1;i<N;i++){
dp[i][i+1]=sum[i+1]-sum[i-1];//sum[0]=0;
}
for(int len=2;len<N;len++){
for(int i=1;i<=N-len;i++){
dp[i][i+len]=inf;
for(int k=i;k<=i+len-1;k++)
dp[i][i+len]=std::min(dp[i][i+len],dp[i][k]+dp[k+1][i+len]+sum[i+len]-sum[i-1]);
}
}
return dp[1][N];
}
标签:表示 代码 i+1 题意 解法 turn 区间 区间dp pre
原文地址:https://www.cnblogs.com/fridayfang/p/9495431.html