在科學計算中經常要計算矩陣的乘積。矩陣a和b可乘的條件是矩陣a的列數等於矩陣b的行數。若a是乙個p×q的矩陣,b是乙個q×r的矩陣,則其乘積c=ab是乙個p×r的矩陣。由該公式知計算c=ab總共需要pqr次的數乘。其標準計算公式為:
現在的問題是,給定n個矩陣。其中ai與ai+1是可乘的,i=1,2,…,n-1。要求計算出這n個矩陣的連乘積a1a2…an,最少的乘法次數。
遞迴公式:
請編寫程式實現矩陣連乘問題的動態規劃演算法,自己設計不少於3組的測試資料,要求顯示出最少的乘法次數,以及最優計算次序。
#include
#include
using
namespace std;
int p[
100]
, n, m[
100]
[100
], s[
100]
[100];
void
matrixchain
(int
*p,int n,
int m[
100]
[100],
int s[
100]
[100])
}}}void
traceback
(int i,
int j,
int s[
100]
[100])
}int
main()
執行結果 計算矩陣連乘積
描述 在科學計算中經常要計算矩陣的乘積。矩陣a和b可乘的條件是矩陣a的列數等於矩陣b的行數。若a是乙個p q的矩陣,b是乙個q r的矩陣,則其乘積c ab是乙個p r的矩陣。計算c ab總共需要p q r次乘法。現在的問題是,給定n個矩陣。其中ai與ai 1是可乘的,i 1,2,n 1。要求計算出這...
計算矩陣連乘積
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述在科學計算中經常要計算矩陣的乘積。矩陣a和b可乘的條件是矩陣a的列數等於矩陣b的行數。若a是乙個p q的矩陣,b是乙個q r的矩陣,則其乘積c ab是乙個p r的矩陣。計算c ab總共需要p q r次乘法。現在的問題是,給定n個...
矩陣連乘積
m times n矩陣a與n times p矩陣b相乘需消耗o mnp 的時間。我們把mnp作為兩個矩陣用來相乘所需時間的測量值。在多個矩陣連乘的情況下,不同矩陣之間的計算順序不同結果雖然相同,但總共所需要的乘法數量不同。例子 a 2561 43 bigl begin 2 5 6 1 4 3 end...