#include <iostream>
#include<string.h>
using namespace std;
const int MAX = 1005;
int p[MAX];
int dp[MAX][MAX];
int n;
void matrix()
{
int j;
memset(dp,0,sizeof(dp));
for(int r = 2; r<=n; r++)
{
for(int i = 1; i<=n-r+1; i++)
{
j = i+r-1;
dp[i][j] = dp[i+1][j]+p[i-1]*p[i]*p[j];
for(int k = i+1; k<j; k++)
{
int t = dp[i][k] +dp[k+1][j]+p[i-1]*p[k]*p[j];
if(t<dp[i][j])
{
dp[i][j] = t;
}
}
}
}
}
int main()
{
cin>>n;
for(int i=0; i<n+1; i++)
cin>>p[i];
matrix();
cout<<dp[1][n]<<endl;
return 0;
}
6.3 矩阵链相乘
最新推荐文章于 2023-11-18 21:57:41 发布