#include<iostream>
using namespace std;
int main(){
int n,i,j,k,r;
cin>>n;
int a[n+1];
for(i=0;i<=n;i++)cin>>a[i];
int m[10][10];//m二维数组用于存放表格 (上交pta时数组大小要改成500)
for(i=1;i<=n;i++)m[i][i]=0;//自己一个矩阵乘法计算量为0
for(r=2;r<=n;r++){//r为层数,i为横坐标j为纵坐标
for(i=1;i<=n-r+1;i++){//循环次数代表一层有多少个元素
j=i+r-1;
m[i][j]=m[i+1][j]+a[i-1]*a[i]*a[j];//给要填的格子赋初值,这里省略了一个+0,默认的赋值就是把矩阵从第一个矩阵的地方分隔开
for(int k=i+1;k<j;k++){
int x=m[i][k]+m[k+1][j]+a[i-1]*a[k]*a[j];
if(x<m[i][j])m[i][j]=x;//如果小的话给要填的格子更新数值
}
}
}
cout<<m[1][n];//表格顶层数及为所求
return 0;
}
08-11
1872
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交