例如上图,将所得结果存入数组中
动规方程组:
用动规求解:
此题只不过是不能取第一个和最后一个,求解方法同矩阵链乘
源码:
#include<stdio.h>
#define MAX 110
int lenth;
int m[MAX][MAX];
int c[MAX];
void multiplication(void){
int i,l,k,j,temp;
for(i=1;i<lenth;i++)
m[i][i]=0;
for(l=2;l<lenth;l++){ //从长度为2开始填写起,
for(i=1;i<lenth-l+1;i++){
j=i+l-1;
m[i][j]=10000000;
for(k=i;k<j;k++){
temp=m[i][k]+m[k+1][j]+c[i-1]*c[k]*c[j];
if(temp<m[i][j])
m[i][j]=temp;
}
}
}
}
int main()
{
int i;
scanf("%d",&lenth);
for(i=0;i<lenth;i++){
scanf("%d",&c[i]);
}
multiplication();
printf("%d\n",m[1][lenth-1]);
return 0;
}