#include<iostream>

using namespace std;
 
int m[100][100];
int r[101];
 
int matrix(int i, int j)
{
int u,k,t;
if(m[i][j]>=0)
return m[i][j];
if(i==j)
return 0;
if(i==(j-1))
{
m[i][j]=r[i]*r[i+1]*r[i+2];
return m[i][j];
}
u=matrix(i,i)+matrix(i+1,j)+r[i]*r[i+1]*r[j+1];
for(k=i+1;k<j;k++)
{
t=matrix(i,k)+matrix(k+1,j)+r[i]*r[k+1]*r[j+1];
if(t<u)
u=t;
}
m[i][j] = u;
return u;
}
 
int main()
{
int n;
cout<<"请输入矩阵数目:"<<endl;
cin>>n;
int i,j;
cout<<"请输入"<<n+1<<"个矩阵系数"<<endl;
for(i=1;i<=n+1;i++)
cin>>r[i];
for(i=1;i<=n+1;i++)
for(j=1;j<=n+1;j++)
m[i][j]=-1;
cout<<"最少乘法运算次数为:"<<matrix(1,n)<<endl;
return 0;
}