第九屆河南省賽 表示式求值 四則運算表示式

2021-09-17 20:55:11 字數 1190 閱讀 5509

假設表示式定義為: 1. 乙個十進位制的正整數 x 是乙個表示式。 2. 如果 x 和 y 是 表示式,則 x+y, x*y 也是表示式; *優先順序高於+. 3. 如果 x 和 y 是 表示式,則 函式 smax(x,y)也是表示式,其值為:先分別求出 x ,y 值的各位數字之和,再從中選最大數。 4.如果 x 是 表示式,則 (x)也是表示式。 例如: 表示式 12*(2+3)+smax(333,220+280) 的值為 69。 請你程式設計,對給定的表示式,輸出其值。  

【標準輸入】 第一行: t 表示要計算的表示式個數 (1≤ t ≤ 10) 接下來有 t 行, 每行是乙個字串,表示待求的表示式,長度<=1000
【標準輸出】 對於每個表示式,輸出一行,表示對應表示式的值。
複製

3

12+2*3

12*(2+3)

12*(2+3)+smax(333,220+280)

18

6069

題意:求算數表示式的值,有smax(x,y)。

以前做過簡單類似的,然後遞迴就寫出來了,這個寫了好久的遞迴,還寫炸了。

資料結構課本上的運算優先順序+棧的運用也太秀了

#includeusing namespace std;

char ope[10]="+-*,()#"; //#用於處理邊界,所有優先順序小於一切

char prec[10][8]=;

int getnum(char c)

return sum;

}int caculate(int a,int b,char threat)

}int main()

else if(str[i]=='+'||str[i]=='-

'||str[i]==','||str[i]=='*'||str[i]=='('||str[i]==')'||str[i]=='#')

int flag=true;//當棧頂元素優先順序大於str[i]時,

while(flag)

case '=':

case '>': }}

}} printf("%d\n",num.top());//輸出棧頂元素

num.pop(); }}

/*1smax(333,220+280)*2+12*(2+3)*/

表示式求值 第九屆河南省賽

時間限制 1 sec 記憶體限制 64 mb 提交 17 解決 14 提交 狀態 討論版 假設表示式定義為 1.乙個十進位制的正整數 x 是乙個表示式。2.如果 x 和 y 是 表示式,則 x y,x y 也是表示式 優先順序高於 3.如果 x 和 y 是 表示式,則 函式 smax x,y 也是表...

第九屆省賽題 表示式求值

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 假設表示式定義為 1.乙個十進位制的正整數 x 是乙個表示式。2.如果 x 和 y 是 表示式,則 x y,x y 也是表示式 優先順序高於 3.如果 x 和 y 是 表示式,則 函式 smax x,y 也是表示式,其值為 先分...

河南省第九屆省賽 通道安全

時間限制 1000 ms 記憶體限制 65535 kb 難度 2描述 alpha 機構有自己的一套網路系統進行資訊傳送。情報員 a 位於節點 1,他準備將乙份情報 傳送給位於節點 n 的情報部門。可是由於最近國際紛爭,戰事不斷,很多通道都有可能被遭到監 視或破壞。經過測試分析,alpha 情報系統獲...