Mnożenie macierzy

Transkrypt

Mnożenie macierzy
Mnożenie macierzy
Jeśli macierz A ma rozmiar (a,b) (a wierszy i b kolumn) oraz macierz B ma rozmiar (b,c), to
możemy, wykonując mniej więcej a*b*c operacji arytmetycznych, policzyć iloczyn macierzy A*B,
który będzie macierzą o rozmiarach (a,c).
Twoim zadaniem jest wyznaczyć optymalne nawiasowanie w wyrażeniu
A_0 * A_1 * A_2 ... A_{n-1}
w tym sensie, aby liczba wykonywanych operacji arytmetycznych była minimalna. Na przykład
iloczyn trzech macierzy A_0=(10,20), A_1=(20,3), A_2=(3,1) obliczając w sposób (A_0 A_1) A_2
daje aż 630 operacji arytmetycznych, a obliczając w sposób A_0 (A_1 A_2) daje tylko 260
operacji arytmetycznych.
Twoim zadaniem jest obliczyć optymalny koszt wymnożenia n macierzy o danych rozmiarach
Input
W pierwszym wierszu dana jest liczba T - określająca liczbę zestawów danych. Każdy zestaw
danych zapisany jest w dwóch wierszach. W pierwszym wierszu podana jest jedna liczba
całkowita dodatnia n - określająca liczbę macierzy do wymnożenia. Powedzmy są to macierze
A_0, A_1, ..., A_{n-1}. W drugim wierszu zapisanych jest n+1 liczb naturalnych dodatnich p_0,
p_1, ..., p_n określających rozmiary macierzy. Rozmiar macierzy A_i to (p_i, p_{i+1}). Możesz
załozyć, że n < 200 oraz p_i < 1000
Output
Dla każdego zestawu danych odpowiedz jaki jest minimalny koszt wymnożenia danych
macierzy.
Example
Input:
3
1
10 90
2
40 50 60
3
10 20 3 1
Output:
0
120000
260

Podobne dokumenty