DP基礎 矩陣連乘

2022-06-20 05:54:15 字數 829 閱讀 7533

dp基礎_矩陣連乘

description

矩陣乘法是線性代數中最基礎的乙個知識點,設矩陣a為乙個n行m列的矩陣,矩陣b為x行y列,那麼a能乘b的條件為m = x,它們相乘將得出乙個n行y列的矩陣,進行一次矩陣乘法的運算次數為n×m×y,現在給出k個矩陣,你每次可以合併相鄰的兩個矩陣,將它們做乘法得出的矩陣作為合併的結果,請問如何合併能使得總的運算次數最少。

input

第一行乙個數k(k≤100)。

接下來k行,每行兩個正整數表示該矩陣的行和列(每個數≤50)。

output

乙個整數表示最少的合併代價。

sample input 1

31 5

5 20

20 1

sample output 1

思路:基本區間dp板子,區間dp掌握--

**:(有點小問題,題目要求是相鄰的矩陣才可以合併,所以不需要複製一遍)

#includeusing namespace std;

struct nodea[1020];

long long n,f[1020][1020];

int main()

for(int i=n;i>=1;i--) f[i][i]=0;

for(int l=2;l<=n;l++)

for(int i=1;i<=2*n-l+1;i++)

}}

long long ans=99999;

for(int i=1;i<=n;i++)

cout

return 0;

}

DP 矩陣連乘

問題 給定n個矩陣,求乘法次數的最小值 1 最優子結構 乙個簡單的解決辦法是把括號放在所有可能的地方,計算每個位置的成本,並返回最小值。對於乙個長度為n的鏈,我們有n 1種方法放置第一組括號。例如,如果給定的鏈是4個矩陣。讓矩陣連為abcd,則有3種方式放第一組括號 a bcd ab cd和 abc...

矩陣連乘DP

矩陣相乘的條件 a1 a2 a1 x,y a2 y,z a3 x,z a1的列數數等於a2的行數 運算次數為x y z 對於a1,a2,an個矩陣,a1 a2 a3 a4 an 我們可以用結合律 也就是新增括號,使整個運算過程運算次數最少 演算法效率最高。維數分別為10 100 100 5 5 50...

矩陣連乘問題(dp)

題目 計算矩陣連乘積a1,a2,an,其中ai的維度為p i 1 p i 輸入規模n,p 0 p n 輸出最少乘的次數和斷點處也就是乘法順序。思路 區間dp,m i j 表示從ai到aj區間內的最少乘的次數,列舉k i用s i j 記錄每次最少次數的時候是在哪個地方斷開,即k的位置。詳見 inclu...