3 1 2 3 7 13 7 8 16 21 4 18
9 239
代码如下:
#include<bits/stdc++.h> using namespace std; int main() { int n; while(~scanf("%d",&n)) { int a[n+1]; for(int i=1; i<=n; i++) { scanf("%d",&a[i]); } int sum[n+1]; int dp[n+1][n+1]; for(int i=1; i<=n; i++) { int t=0; for(int j=1; j<=i; j++) { t=t+a[j]; } sum[i]=t; } for(int i=1; i<=n; i++) { dp[i][i]=0; } for(int r=2; r<=n; r++) { for(int i=1; i<=n-r+1; i++) { int j=i+r-1; int t=dp[i][i]+dp[i+1][j]+sum[j]-sum[i]+a[i]; for(int k=i; k<=j-1; k++) { if(t>dp[i][k]+dp[k+1][j]+sum[j]-sum[i]+a[i]) { t=dp[i][k]+dp[k+1][j]+sum[j]-sum[i]+a[i]; } } dp[i][j]=t; } } printf("%d\n",dp[1][n]); } return 0; }
原文:https://www.cnblogs.com/yinbiao/p/8981901.html