CH1802 表示式計算4 棧

2021-09-26 23:38:58 字數 1591 閱讀 7361

中綴表示式求值有兩種方法,一是轉成字尾表示式並求值,二是遞迴求值;

本題有多餘括號,第一種方法較好,一開始在數值棧中加入 0

00,防止讀入的第乙個數值是負數。

#include

#include

#include

using

namespace std;

const

int maxn =35;

char s[maxn]

;stack<

int> nums;

stack<

char

> opts;

inline

intqpow

(int a,

int b)

return ans;

}inline

intgrade

(char opt)

inline

void

calc

(char opt)

intmain()

if(s[i]

=='('

) opts.

push

(s[i]);

else

if(s[i]

==')'

)else

}while

(!opts.

empty()

&& opts.

top()!=

'('&& opts.

top()!=

')')

calc

(opts.

top())

, opts.

pop();

printf

("%d"

, nums.

top())

;return0;

}

// 本題只有60分

#include

#include

const

int maxn =35;

inline

intqpow

(int a,

int b)

return ans;

}char s[maxn]

;int

calc

(int l,

int r)

for(

int i = r, j =

0; i >= l;

--i)

for(

int i = r, j =

0; i >= l;

--i)

if(s[l]

=='('

&& s[r]

==')'

)return

calc

(l +

1, r -1)

;int num =0;

for(

int i = l; i <= r;

++i)

num = num *

10+ s[i]

-'0'

;return num;

}int

main()

表示式計算4(棧)

題目描述 給出乙個表示式,其中運算子僅包含 加 減 乘 整除 乘方 要求求出表示式的最終值 資料可能會出現括號情況,還有可能出現多餘括號情況 資料保證不會出現 geq 2 的答案資料保證不會出現 2 31的答案 資料可能會出現負數情況 輸入描述 僅一行,即為表示式 輸出描述 僅一行,既為表示式算出的...

計算表示式 棧

問題 現在有乙個合法的二進位制表示式,請計算出該表示式的值 input 輸入一行字串,表示乙個二進位制表示式。長度不超過 100,000 ouput 輸出表示式的值 input output 0 1 0 1 1 0 1 1 兩種方法 1 被動 遇到右括號再進行運算,直至左括號 include inc...

表示式計算4

給出乙個表示式,其中運算子僅包含 要求求出表示式的最終值,資料可能會出現括號情況,還有可能出現多餘括號情況資料保證不會出現 maxlongint的資料,資料可能會出現負數情況 僅一行,即為表示式 僅一行,既為表示式算出的結果 2 2 1 1 16 表示式總長度 30 轉變為 將乙個中序表示式轉化成為...