NYOJ 1409 快速計算【矩陣連乘】
題目描述:
給定n個矩陣{A1,A2,A3,…,An},其中,Ai 和Ai+1(i=1,2,…,n−1)是可乘的。矩陣乘法如圖4-40所示。用加括號的方法表示矩陣連乘的次序,不同的計算次序計算量(乘法次數)是不同的,找出一種加括號的方法,使得矩陣連乘的計算量最小。
例如:
A1是M5×10的矩陣;
A2是M10×100的矩陣;
A3是M100×2的矩陣。
那麼有兩種加括號的方法:
(1)(A1 A2)A3;
(2)A1(A2 A3)。
第1種加括號方法運算量:5×10×100+5×100×2=6000。
第2種加括號方法運算量:10×100×2+5×10×2=2100。
不同的加括號辦法,矩陣乘法的運算次數可能有巨大的差別!
輸入描述:
第一行是一個整型數m(m<100)表示共有m組測試資料。
每組測試資料的第一行是一個整數n(0<n<100)表示矩陣的個數。
第2行共n+1個整數pi((0<pi<100)),是每個矩陣的行數和最後一個矩陣的列數。</span>
輸出描述:
對於每一組輸入,輸出矩陣連乘的最少乘法次數。
每組的輸出佔一行。</span>
樣例輸入:
複製
2
5
3 5 10 8 2 4
8
4 8 12 7 9 30 4 65 52
樣例輸出:
314
16516
題解:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define INF 0x3f
using namespace std;
const int maxn = 1005;
int dp[maxn][maxn];
int k, m, n;
int p[maxn];
int main()
{
cin >> m;
while(m--) {
cin >> n;
for(int i = 0; i <= n; i++)
cin >> p[i];
memset(dp, 0, sizeof dp);
for(int x = 2; x <= n; x++) {
for(int i = 1; i <= n-x+1; i++) {
int j = i+x-1;
dp[i][j] = dp[i+1][j] + p[i-1]*p[i]*p[j];
for(int l = i; l < j; l++) {
dp[i][j] = min(dp[i][l]+dp[l+1][j]+p[i-1]*p[l]*p[j], dp[i][j]);
}
}
}
cout << dp[1][n] <<endl;
}
return 0;
}
相關文章
- 矩陣計算矩陣
- 計算矩陣的秩矩陣
- 矩陣連乘(動態規劃演算法)矩陣動態規劃演算法
- 矩陣連乘問題 Python 動態規劃矩陣Python動態規劃
- 矩陣:如何使用矩陣操作進行 PageRank 計算?矩陣
- 矩陣快速冪矩陣
- 怎樣用python計算矩陣乘法?Python矩陣
- matlab計算含有未知數的矩陣Matlab矩陣
- 演算法學習:矩陣快速冪/矩陣加速演算法矩陣
- 三維旋轉矩陣 左乘和右乘分析矩陣
- 矩陣快速冪(快忘了)矩陣
- 矩陣快速冪總結矩陣
- 深度學習中需要的矩陣計算深度學習矩陣
- POJ 3613 Cow Relays 矩陣乘法Floyd+矩陣快速冪矩陣
- 【矩陣求導】關於點乘 (哈達瑪積)的矩陣求導矩陣求導點乘
- 矩陣類及其常規運算(加、減、乘、轉置、求逆、行列式、代數餘子式、伴隨矩陣)矩陣
- 矩陣快速冪最佳化矩陣
- 矩陣快速冪加速最短路矩陣
- 【矩陣乘法】【快速冪】遞推矩陣
- python 計算矩陣的相關演算法Python矩陣演算法
- 計算機圖形學之矩陣變換計算機矩陣
- matlab矩陣連線圖解Matlab矩陣圖解
- Numpy中的矩陣運算矩陣
- 樣本協方差矩陣的定義與計算矩陣
- HDU 1005 Number Sequence(矩陣快速冪)矩陣
- 卷積運算元的矩陣向量乘積表示&一維離散降質模型卷積矩陣模型
- pytorch基礎七(矩陣運算)PyTorch矩陣
- OpenGL光照計算中法線矩陣原理及推到過程矩陣
- 計算階乘
- HDU 2157 How many ways?? (矩陣快速冪)矩陣
- HDU 2256Problem of Precision(矩陣快速冪)矩陣
- 大規模 Transformer 模型 8 位元矩陣乘簡介ORM模型矩陣
- python中連乘怎麼算?Python
- 轉矩的計算?
- 單像空間後方交會計算旋轉矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 鄰接矩陣、度矩陣矩陣
- 矩陣運算與相抵標準型矩陣