题解 1896: 蓝桥杯算法提高VIP-矩阵乘法

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

1896: 蓝桥杯算法提高VIP-矩阵乘法

#####个人认为还是先记住那个矩阵连乘的公式比较好,关键就在那个公式取子问题能不能理解*min(dp[i][j],dp[i][k]+dp[k+1][j]+p[i-1]*p[k]*p[j])*```c++#include#includeusingnamespacestd;constintMAXN=10

蓝桥杯算法提高VIP-矩阵乘法 (C++代码)

######与合并石子那题有点类似定义dp[i][j]:第i个矩阵依次乘到第j个矩阵的最少的运算次数;定义A[i][j]:第i个矩阵依次乘到第j个矩阵所得的矩阵那么A[i][j]=A[i][k]*A[k+1][j](k=itoj-1)这样将在k从i遍历到j-1的过程中,更新dp[i][j]的值。

蓝桥杯算法提高VIP-矩阵乘法 (C++代码)

这道题不能采用贪心法,因为如果每次让所用乘法次数最少的两矩阵相乘,最终所得结果不一定为最优解,例如,,这三个矩阵,采用贪心法算得结果为1100,而最优解为1010。针对本题我提出了这样的思路:n个矩阵相乘,简记为a1.a2.a3...an(ai代表第i个矩阵),

蓝桥杯算法提高VIP-矩阵乘法 (C++代码)我写不出来

1x1010x5的矩阵,合并就成了1x5的矩阵,运算次数是1x10x5每次相邻的两个矩阵可以合并,那么我们总是希望对有两个最小花费的矩阵进行合并,假设第一个矩阵是x*y,第二个是y*z那么新花费就是第一个矩阵的花费+第二个矩阵的花费+x*y*z;假设n个矩阵要合并,