7 10 矩陣連乘問題 10分

2021-10-12 08:39:28 字數 1014 閱讀 5368

給定n個矩陣{a1,a2,…,an}(n<=20),其中ai與ai+1是可乘的,i=1,2…,n-1。第i個矩陣的維數用p​i−1​​,p​i​​來表示。如何確定計算矩陣連乘積的計算次序,使得依此次序計算矩陣連乘積需要的數乘次數最少。例如,給定三個連乘矩陣的維數陣列p為:10,100,5,50,即分別是10 ×100,100×5和5×50,採用(a1a2)a3,乘法次數為10×100×5+10×5×50=7500次,而採用a1(a2a3),乘法次數為100×5×50+10×100×50=75000次乘法,顯然,最好的次序是(a1a2)a3,乘法次數為7500次。

輸入格式:

輸入有兩行。第一行乙個n表示矩陣的個數;第二行有n+1個數,分別為p​0​​,p​1​​…p​n​​。

輸出格式:

乙個數,表示最少的乘法次數。

輸入樣例:

6

3035155

1020

25

輸出樣例:

15125
#include

using

namespace std;

#define rep(i, l, r) for(int i = l; i <= r; i++)

#define rep1(i, l, r) for(int i = l; i < r; i++)

#define ll long long

#define inf 0x3f3f3f3f

int p[

10005

], m[

10005][

10005

], s[

10005][

10005];

void

matrixchain

(int n)}}

}}intmain()

7 10 矩陣A乘以B 10 分

7 10 矩陣a乘以b 10 分 給定兩個矩陣a和b,要求你計算它們的乘積矩陣ab。需要注意的是,只有規模匹配的矩陣才可以相乘。即若a有r a行 ca列,b有rb 行 c b列,則只有c a與r b 相等時,兩個矩陣才能相乘。輸入格式 輸入先後給出兩個矩陣a和b。對於每個矩陣,首先在一行中給出其行數...

矩陣連乘問題

矩陣連乘問題 應用動態規劃演算法,將前面計算的重複值儲存,一次來推進下一步的計算,直到得到m 1 n 的值,為最少的乘法次數 m i j 表示計算a i.j 所需的最少數乘次數 m i j min i s i j 記錄斷開位置,也就是最少計算次數的中間位置。include using namespa...

矩陣連乘問題

由於矩陣的乘法滿足結合律,故計算矩陣的連乘積可以有許多不同的計算次序。這中計算次序 可以用加括號的方式來確定。例如,矩陣連乘積a1a2a3a4可以有5種不同的完全加括號方式 a1 a2 a3a4 a1 a2a3 a4 a1a2 a3a4 a1 a2a3 a4 a1a2 a3 a4 矩陣a和b可乘的條...