問題引入
**實現
//問題:矩陣連乘
//日期: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...