#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m[2000];
ll d[1010][1010];
const ll MAX=1e18;
ll matrix(int n)
{
ll sum;
memset(d,0,sizeof(d));
for(int len=2;len<=n;len++)
{
for(int i=1,j=len;j<=n;i++,j++)
{
ll minx=MAX;
for(int k=i;k<j;k++)
{
sum=d[i][k]+d[k+1][j]+m[i-1]*m[k]*m[j];
if(sum<minx)
minx=sum;
}
d[i][j]=minx;
}
}
return d[1][n];
}
int main()
{
while(~scanf("%lld",&n))
{
for(int i=0;i<=n;i++)
scanf("%lld",&m[i]);
printf("%lld\n",matrix(n));
}
return 0;
}
算法提高 矩阵乘法
最新推荐文章于 2020-07-28 18:16:04 发布