矩陣鏈乘 解析表示式

2022-05-02 11:24:13 字數 757 閱讀 6558

題目

輸入n個矩陣的維度和一些矩陣鏈乘表示式,輸出乘法的次數。如果無法進行乘法,輸出error.假定a是m*n矩陣,b是n*p矩陣,則乘法次數為m*n*p;如果a的列數不等於b的行數,則乘法無法進行。

解題思路

本體的關鍵是解析表示式。本題的表示式比較簡單,可以用乙個棧來完成:遇到字母時直接入棧,遇到右括號時出棧(出棧兩個並計算,然後將結果入棧)。因為輸入保證合法,左括號不用管。

**實現

1 #include2 #include3 #include

4 #include5

using

namespace

std;67

struct

matrix

811 }m[26

];12

13 stacks;

1415

intmain()

1626

string

expr;

27while (cin >>expr)

2842 res += m2.a * m2.b *m1.b;43}

44}45if (flag) printf("

error\n");

46else printf("

%d\n

", res);47}

48return0;

49 }

最優矩陣鏈乘(表示式上的動態規劃)

例如 假設a b c矩陣分別是 2 x 3 3 x 4 4 x 5 的,則 a x b x c 的運算量是 2 x 3 x 4 2 x 4 x 5 64,但是 a x b x c 的運算量是 3 x 4 x 5 2 x 3 x 5 90。想想運算量為什麼是這麼計算的。顯然第一種計算方法比較節省計算量...

表示式解析

1 本文目標 分析用堆疊解析算術表示式的基本方法。給出的示例 能解析任何包括 和0到9數字組成的算術表示式。2 中綴表示式和字尾表示式 中綴表示式就是通常所說的算術表示式,比如 1 2 3 4。字尾表示式是指通過解析後,運算子在運算數之後的表示式,比如上式解析成字尾表示式就是12 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...