輸入:
共兩行第一行 n ( 1<=n<=100 ),代表矩陣個數。
第二行有 n+1 個數,分別為 a1 、 a2 ...... an+1 ( 1<=ak<=2000 ), ak 和 ak+1 代表第 k 個矩陣是個 ak x ak+1 形的。
輸出:共兩行
第一行 m ,為最優代價。注:測試用例中 m 值保證小於 2^31
第二行為最優順序。如 (a1((a2a3)a4)) ,最外層也加括號。
注意:測試用例已經保證了輸出結果唯一,所以沒有aaa的情況.
測試輸入
期待的輸出
時間限制
記憶體限制
額外程序
測試用例 1
以文字方式顯示
6↵30 35 15 5 10 20 25↵
以文字方式顯示
15125↵
((a1(a2a3))((a4a5)a6))↵
1秒64m
0
#include#include#define n 105
using namespace std;
int v[n][n]; //v[i][i]儲存矩陣鏈從i到j的最小乘法次數
int c[n][n]; //c[i][j]儲存矩陣鏈從i到j的最佳分割位置
int a[n]; //矩陣鏈
int n; //矩陣個數
void minproduct() //自底向上更新最小乘法次數和斷點
else //特判
return 0;
}
矩陣鏈乘問題
問題描述 給定n個矩陣的鏈 a2,an 矩陣 a i 的規模為 p i pi 1 1 i n 求完全括號化的方案,使得計算乘積 a 1,a2 an 所需標量乘法的次數最少。遞推式 m i,j if i jif i include include include using namespace std...
最優矩陣鏈乘
問題描述 乙個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...
最優矩陣鏈乘
題目大意 乙個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...