描述
输入
输入共n+1行
第一行输入矩阵的总个数n[2,1000]
后n行分别输入矩阵的维数[1,100]
输出
最后一行输出少乘法次数
输入样例 1
6
30 35
35 15
15 5
5 10
10 20
20 25
输出样例1
15125
代码实现
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#define x first
#define y second
class solution
{
public:solution(const vector<pair<int,int>>& v,int n){vector<vector<int>> dp(n,vector<int>(n,0));for(int len=1;len<n;len++){for(int i=0;i<n-len;i++){int j=i+len;if(len==1){dp[i][j]=v[i].x*v[i].y*v[j].y;}else{dp[i][j]=dp[i][i]+dp[i+1][j]+v[i].x*v[i].y*v[j].y;for(int k=i+1;k<j;k++){dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+v[i].x*v[k].y*v[j].y);}}}}cout<<dp[0][n-1]<<endl;}
};
int main()
{int n,a,b;cin>>n;vector<pair<int,int>> v;for(int i=0;i<n;i++){cin>>a>>b;v.push_back(make_pair(a,b));}solution p(v,n);return 0;
}