您的位置:首页 > 其它

算法提高 矩阵乘法 区间dp

2018-03-10 20:05 274 查看
http://lx.lanqiao.cn/problem.page?gpid=T417

#include <iostream>
#include <algorithm>
#include <map>
#include <cmath>
#include <queue>
#include <cstring>
using namespace std;

const int maxn=1010;
const long long INF=1e18;

int n;
long long a[maxn];
long long dp[maxn][maxn];
// dp[i][j]第i个矩阵到第j个矩阵所需要的最小运算数

int main(){

scanf("%d",&n);

for (int i=0;i<=n;i++){
scanf("%lld",&a[i]);
}

memset(dp,0,sizeof(0));

for (int len=2;len<=n;len++){        //枚举长度
for (int l=1,r=len;r<=n;l++,r++){   //枚举左端点和右端点
dp[l][r]=INF;
for (int k=l;k<r;k++){     //枚举中点
dp[l][r]=min(dp[l][r],dp[l][k]+dp[k+1][r]+a[l-1]*a[k]*a[r]);
}
}
}

printf("%lld",dp[1]
);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: