算法提高 矩阵乘法
2017-04-21 13:25
183 查看
问题描述
有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, …, a[n-1]*a
,现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。
两个大小分别为p*q和q*r的矩阵相乘时的运算次数计为p*q*r。
输入格式
输入的第一行包含一个整数n,表示矩阵的个数。
输出格式
输出一个整数,表示最少的运算次数。
样例输入
3
样例输出
150
数据规模和约定
1<=n<=1000, 1<=ai<=10000。
一定要注意用longlong 保存数据,不然会错很多组数据
AC代码:
有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, …, a[n-1]*a
,现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。
两个大小分别为p*q和q*r的矩阵相乘时的运算次数计为p*q*r。
输入格式
输入的第一行包含一个整数n,表示矩阵的个数。
输出格式
输出一个整数,表示最少的运算次数。
样例输入
3
样例输出
150
数据规模和约定
1<=n<=1000, 1<=ai<=10000。
一定要注意用longlong 保存数据,不然会错很多组数据
AC代码:
#include"iostream" #include"string.h" using namespace std; long long ai[2010]; long long dp[2010][2010]; int main() { memset(dp,0,sizeof(dp)); int n; cin>>n; for(int i=1;i<=n+1;i++) { cin>>ai[i]; } for(int i=n-1;i>=1;i--) { for(int j=i+1;j<=n;j++) { long long mmin=1e18; for(int k=i;k<j;k++) { long long sum=dp[i][k]+dp[k+1][j]+ai[i]*ai[k+1]*ai[j+1]; if(sum<mmin) mmin=sum; } dp[i][j]=mmin; } } cout<<dp[1] <<endl; return 0; }
相关文章推荐
- 算法提高 矩阵乘法 区间dp
- 算法提高 矩阵乘法
- 算法提高 矩阵乘法(90分)
- 蓝桥杯 算法提高 矩阵乘法(Java解题)
- cpu gpu做矩阵乘法效率比对,虽然如此,但是对需要自己做的算法是否能如此高效的提高还是未知
- 算法提高 矩阵乘法 区间DP
- 蓝桥杯 算法提高 矩阵乘法 (区间dp)
- 算法提高-矩阵乘法[DP]
- 蓝桥杯 算法提高 矩阵乘法 区间dp
- 算法提高 矩阵乘法 区间dp
- 算法提高 矩阵乘法
- 蓝桥 ADV-232 算法提高 矩阵乘法 【区间DP】
- 蓝桥杯算法提高 矩阵乘法
- 算法提高 矩阵乘法 蓝桥杯
- 蓝桥 ADV-232 算法提高 矩阵乘法 【区间DP】
- 【蓝桥】算法提高 矩阵乘法
- 算法笔记_081:蓝桥杯练习 算法提高 矩阵乘法(Java)
- 蓝桥杯 算法提高 矩阵乘法 【经典区间dp】
- 算法提高 矩阵乘法
- 算法提高 矩阵乘法 (区间dp)