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...