time limit:1 ms|
memory limit:128 mb
difficulty:3
乙個n*m矩陣由n行m列共n*m個數排列而成。兩個矩陣a和b可以相乘當且僅當a的列數等於b的行數。乙個n*m的矩陣乘以乙個m*p的矩陣等於乙個n*p的矩陣,運算量為nmp。
矩陣乘法滿足結合律,a*b*c可以表示成(a*b)*c或者是a*(b*c),兩者的運算量卻不同。例如當a=2*3 b=3*4 c=4*5時,(a*b)*c=64而a*(b*c)=90。顯然第一種順序節省運算量。
現在給出n個矩陣,並輸入n+1個數,第i個矩陣是a[i-1]*a[i]
第一行n(n<=100)
第二行n+1個數
最優的運算量 3
2 3 4 5
64動態規劃
思路:動態規劃類題目,最優加括號結構, 今天剛看懂, 用乙個二維陣列儲存最
解,
ans[i][j]為第i到第j個矩陣的最優加括號解, 最終要求的就是1到n的最優加括號解即
ans[1][n], 因為求大問題要借助子問題的解, 所以要從小到大依次求解。具體請參考最
優加括號演算法。
#include #include #include #define max 101
unsigned int ans[max][max], p[max], n; //數較大需要用無符號整形
int materixchain()
for(m = 2; m <= n; m++) //m: 矩陣個數
}} }
return ans[1][n];
}int main()
printf("%u\n", materixchain());
return 0;
}
最優矩陣連乘
乙個n m矩陣由n行m列共n m個數排列而成。兩個矩陣a和b可以相乘當且僅當a的列數等於b的行數。乙個n m的矩陣乘以乙個m p的矩陣等於乙個n p的矩陣,運算量為nmp。矩陣乘法滿足結合律,a b c可以表示成 a b c或者是a b c 兩者的運算量卻不同。例如當a 2 3 b 3 4 c 4 ...
最優矩陣連乘問題
1.引言 多矩陣連乘 對於一般的矩陣乘法來說,如矩陣a m,n 與矩陣b n,p 相乘需要進行的加法次數為m n p次乘法。由於矩陣乘法滿足結合律,因此矩陣相乘的結合性,會影響整個計算表示式的乘法執行次數。如下面的例子,其中a 10,5 b 5,20 c 20,3 1 ab c 執行乘法次數為130...
矩陣連乘c 最優值
include include define n 20 void matrixchain int p n int n,int m n n int s n n 矩陣個數從兩個開始一次遞增 for r 2 r n r int main void 儲存矩陣的行和列陣列 int m n n 儲存矩陣與矩陣相...