#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
int d[105],sum[105];
int dp[105][105];
int main()
{
int t;
cin>>t;
int c=1;
while(t--){
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>d[i];
sum[1]=d[1];
for(int i=2;i<=n;i++) sum[i]=sum[i-1]+d[i];
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
if(i==j) dp[i][i]=0;
else dp[i][j]=inf;
}
}
for(int len=2;len<=n;len++){
for(int i=1;i<=n;i++){
int j=i+len-1;
if(j>n) break;
for(int k=1;k<=j;k++){
dp[i][j]=min(dp[i][j],(k-i)*d[i]+dp[i+1][k]+dp[k+1][j]+(k-i+1)*(sum[j]-sum[k]));
}
}
}
printf("Case #%d: %d\n",c++,dp[1][n]);
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交