Katedra počítačů ČVUT FEL & Czech ACM Chapter
Pro dvě dané matice A a B určíme matici
Soutěž v programování 1999 Matice matice.p, matice.c, matice.C
![]()
![]()
Počet sloupců matice A musí být stejný jako počet řádků matice B.
Je zřejmé, že pro výpočet celé matice C je potřeba provést celkem
Pro násobení více než dvou matic existuje více způsobů, jak to
provést. Například pro matice X, Y, Z můžeme
Je zřejmé, že první způsob výpočtu je efektivnější.
Vaším úkolem je pro danou posloupnost matic určit optimální pořadí jejich násobení tak, aby celkový počet dílčích operací násobení byl minimální.
Specifikace vstupu
Vstup se skládá z N zadání. První řádek vstupu obsahuje pouze
celé kladné číslo N. Dále následují jednotlivá zadání.
Na prvním řádku každého
zadání je jedno kladné celé číslo M udávající počet matic. Následuje
M řádků, na každém z nich je dvojice kladných celých čísel udávající
počet řádků a počet sloupců (v tomto pořadí) matice. Pořadí, v jakém
jsou řádky s rozměry matic uspořádány, odpovídá uspořádání matic
Specifikace výstupu Výstupem programu bude jedna řádka pro každé zadání obsahující uzávorkovaný výraz, ze kterého jasně vyplývá pořadí násobení matic. Výrazem je `(E x E)', kde E je buď výraz, nebo označení matice. Přesný formát výstupu viz též níže uvedený příklad. Pokud existuje více řešení, libovolné z nich bude akceptované jako správná odpověď. Příklad vstupu 3 3 1 5 5 20 20 1 3 5 10 10 20 20 35 6 30 35 35 15 15 5 5 10 10 20 20 25Příklad výstupu (A1 x (A2 x A3)) ((A1 x A2) x A3) ((A1 x (A2 x A3)) x ((A4 x A5) x A6)) |