错题本 矩阵乘法 简单动态规划

这是一道关于矩阵乘法的动态规划问题,要求计算n个矩阵相乘的最少时间复杂度。通过将矩阵视为序列,设定动态规划状态F[i][j]表示保留i号和j号矩阵的最小代价,正确做法应首先考虑矩阵乘法的顺序,从外层到内层进行枚举以优化计算。题目中提到的错误在于忽视了枚举顺序,正确的解法需要注意动态规划细节。
摘要由CSDN通过智能技术生成

Problem 4 : matrix
矩阵乘法

问题描述
一个A x B的矩阵乘以一个B x C的矩阵将得到一个A x C的矩阵,时间复杂度为A x B x C。矩阵乘法满足结合律(但不满足交换律)。顺序给出n个矩阵的大小,请问计算出它们的乘积的最少需要花费多少时间。

输入数据
第一行输入一个正整数n,表示有n个矩阵。
接下来n行每行两个正整数Xi,Yi,其中第i行的两个数表示第i个矩阵的规模为Xi x Yi。所有的Xi、Yi<=100。输入数据保证这些矩阵可以相乘。

输出数据
输出最少需要花费的时间。

样例输入
3
10 100
100 5
5 50

样例输出
7500

样例说明
顺序计算总耗时7500;先算后两个总耗时75000。

时间限制
各测试点1秒

内存限制
你的程序将被分配32MB的运行空间

数据范围
n<=100。

这是一道简单的动态规划,我们只需要将这个矩阵看成一个序列就好了,每次乘可以消掉中间的一个数,那么我们设F[i][j]表示矩阵中留下i号点与j号点的最小花费,那么我们有F[i][j]=min(F[i][k]+F[k][j]+a[i]*a[k]*a[j])但是一开始我做的时候忽略了循环顺序的关系,直接枚举了i,j,k,就导致了错误,本题应该是层数优先,最外面一层枚举跨度,所以也请大家多注意动态规划的这些细节。

#include<c
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值