表示式求值

2021-08-17 14:43:22 字數 788 閱讀 7671

題解:之前用棧做,但思路十分複雜,判斷了很多種情況,沒有找到一種簡單

的方法。然後看到網上有人說可以不用棧做,對於這道題的話就簡單易懂

了許多,思路是記憶上一次的符號和這一次的符號來判斷運算和優先順序,

連續的乘法另外儲存最後再加到sum中去,不能讀到符號時結束。

**:

#include#include#include#include#include#include#include#include#include#include#include#include#define maxa 1000005

#define mod 10000

using namespace std;

typedef long long ll;

long long sum,n,lc;

char old = 0,next;

bool last = true;

int main()

if(old == '*')

lc = (n * lc) % mod;

if(!last)

sum = (sum + lc) % mod;

old = next;

} printf("%lld",sum);

}

表示式求值

程式的說明見清華大學出版社 資料結構 c語言版 include include define stack init size 40 define stackincrement 20 define ok 1 define false 0 typedef structs stack typedef st...

表示式求值

既然是表示式求值,自然需要在記憶體中儲存計算結果以及中間值。在 用c語言寫直譯器 一 中提過 變數要求是若型別,而 c 語言中的 view plaincopy to clipboardprint?in basic io.h define memery size 26 typedef enum var...

表示式求值

寫了乙個下午,各種糾結,各種問,終於搞明白了。但是自己還是想出來的一點東西的。很爽歪歪的,哈哈。先貼第一次的 include include include include include includeusing namespace std char data 7 7 int sign char ...