【蓝桥杯】算法提高 矩阵乘法(C++)

本文介绍了如何解决矩阵乘法中的效率问题,通过动态规划方法优化矩阵链乘法,以减少运算次数。具体解题思路包括设定dp矩阵来记录连续矩阵相乘的最小运算数,并利用状态转移方程进行优化。样例输入和输出展示了算法的应用,数据规模限定在1<=n<=1000, 1<=ai<=10000。" 135371072,10438595,卷积神经网络在遥感图像地物分类的应用与优势,"['人工智能', 'cnn', '遥感图像地物分类']
摘要由CSDN通过智能技术生成

【蓝桥杯】算法提高 矩阵乘法(C++)

问题描述

题目链接:矩阵乘法.
问题描述:
  有n个矩阵,大小分别为a0a1, a1a2, a2a3, …, a[n-1]a[n],现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。
  两个大小分别为p
q和q
r的矩阵相乘时的运算次数计为pqr。
输入格式:
  输入的第一行包含一个整数n,表示矩阵的个数。
  第二行包含n+1个数,表示给定的矩阵。
输出格式:
  输出一个整数,表示最少的运算次数。
样例输入:

3
1 10 5 20

样例输出:

150

数据规模和约定:
  1<=n<=1000, 1<=ai<=10000。

解题思路

借鉴:【算法导论】动态规划之“矩阵链乘法”问题.
1.用dp[i][j]代表矩阵i 连续相乘到 j 的最小运算数
2.状态转移方程: dp[i][j] = min(dp[i][j],dp[i][k] + dp[k + 1][j] + a[i - 1]*a[k]a[j]
其中 k 代表将{i···j}原矩阵链分割成 {i··k}
{k+1···j}两小矩阵相乘

具体代码

#include<bits/stdc++.h>
using namespace std;
long long n,a[1001],dp[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值