#define len 105
int m[len][len],p[len];
int n;
bool input(){
int i;
if(scanf("%d",&n)==1&&n>0){
for(i=0;i<n;i++)
scanf("%d",&p[i]);
return true;
}
else return 0;
}
int dp_matrix_multiply(){
int i,j,r,k,tem;
n-=1;
for(i=1;i<=n;i++)
m[i][i]=0;
for(r=2;r<=n;r++){
for(i=1;i<=n-r+1;i++){
j=i+r-1;
//i==k
m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];
for(k=i+1;k<j;k++){
tem=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
m[i][j]=tem<m[i][j]?tem:m[i][j];
}
}
}
return m[1][n];
}
int main(void){
int ans;
while(input()){
ans=dp_matrix_multiply();
printf("%d\n",ans);
}
return 0;
}
poj 1651矩阵连乘法回顾 2018-2-4
最新推荐文章于 2021-02-24 00:01:43 发布