動態規劃之矩陣連乘 2021 2 2

2021-10-18 19:35:59 字數 1369 閱讀 5493

問題引入

**實現

//問題:矩陣連乘

//日期:2021/2/1

//編碼:高萬祿

#include

using

namespace std;

#define n 1000

//最多n-1個矩陣

int matrix_data[n]

;int mul_num[n]

[n],strategy[n]

[n];

//發現策略資訊

void

matrix_mul

(int

&matrix_num)

}for

(int step=

2;step<=matrix_num;step++)}

}}}//列印策略

void

print_result

(int i,

int j)

cout<<

"(";

print_result

(i,strategy[i]

[j])

; cout<<

"*";

print_result

(strategy[i]

[j]+

1,j)

; cout<<

")";

}int

main

(int argc,

char

**ar**)

//策略資訊發現matrix_mul

matrix_mul

(matrix_num)

;//列印策略

print_result(1

,matrix_num)

;return0;

}

程式樣例
矩陣個數:

5矩陣的行數與最後乙個矩陣的列數:35

10824

((m[

1]*(

m[2]

*(m[

3]*m

[4])

))*m

[5])

--------------------------------

process

exited

after

11.84

seconds

with

return

value

0請按任意鍵繼續..

.

動態規劃之矩陣連乘

以下內容參考 摘抄 演算法設計與分析 王曉東編著,清華大學出版社2003年1月第1版。給定n個矩陣,其中ai與ai 1是可乘的,i 1,2,n 1。考察這n個矩陣的連乘積a1a2 an。由於矩陣乘法滿足結合律,故計算矩陣的連乘積可以有許多不同的計算次序,這種計算次序可以用加括號的方式來確定。若乙個矩...

動態規劃之矩陣連乘

假設矩陣a1 m n a2 n p 則a1 a1 m p 其中它們相乘的次數為 m n p。矩陣連乘 多個矩陣相乘,它滿足結合律,故計算矩陣連乘有許多不同的計算次序,不同的計算次序也會導致計算量 數乘次數 的不同。例如 有三個矩陣a1 10 20,a2 20 40,a3 40 30,則a1 a2 a...

動態規劃之矩陣連乘

題目描述 給定n個矩陣 a1,a2,an 其中,ai與ai 1是可乘的,i 1,2 n 1 用加括號的方法表示矩陣連乘的次序,不同的計算次序計算量 乘法次數 是不同的,找出一種加括號的方法,使得矩陣連乘的次數最小。例如 a1是a 5 10 的方陣 a2是a 10 100 的方陣 a3是a 100 2...