日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NYOJ 305 表达式求值

發布時間:2025/3/16 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NYOJ 305 表达式求值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

表達式求值

時間限制:3000?ms ?|? 內存限制:65535?KB 難度:3 描述

Dr.Kong設計的機器人卡多掌握了加減法運算以后,最近又學會了一些簡單的函數求值,比如,它知道函數min(20,23)的值是20?,add(10,98)?的值是108等等。經過訓練,Dr.Kong設計的機器人卡多甚至會計算一種嵌套的更復雜的表達式。

假設表達式可以簡單定義為:

1.?一個正的十進制數?x?是一個表達式。

2.?如果?x?和?y??表達式,則?函數min(x,y?)也是表達式,其值為x,y?中的最小數。

3.?如果?x?和?y??表達式,則?函數max(x,y?)也是表達式,其值為x,y?中的最大數。

4.如果?x?和?y??表達式,則?函數add(x,y?)也是表達式,其值為x,y?之和。

例如,?表達式?max(add(1,2),7)?的值為?7。

請你編寫程序,對于給定的一組表達式,幫助?Dr.Kong?算出正確答案,以便校對卡多計算的正誤

輸入
第一行: N 表示要計算的表達式個數 (1≤ N ≤ 10)?
接下來有N行, 每行是一個字符串,表示待求值的表達式
(表達式中不會有多余的空格,每行不超過300個字符,表達式中出現的十進制數都不
超過1000。)
輸出
輸出有N行,每一行對應一個表達式的值。
樣例輸入
3 add(1,2) max(1,999) add(min(1,1000),add(100,99))
樣例輸出
3 999 200
AC碼:
#include<stdio.h> #include<string.h> int main() {int n,len,num[80],result[200];char str[305];scanf("%d",&n);while(n--){scanf("%s",str);len=strlen(str);int i=0,j=-1,sum=0,k=0,p;while(i<len){if(str[i]=='a'){num[++j]=1;i=i+4;}else if(str[i]=='m'){if(str[i+1]=='i')num[++j]=2;if(str[i+1]=='a')num[++j]=3;i=i+4;}else if(str[i]>='0'&&str[i]<='9'){sum=0;while(str[i]>='0'&&str[i]<='9'){sum=sum*10+str[i]-'0';i++;}result[k++]=sum;}else if(str[i]==')'){p=num[j--];k--;if(p==1){result[k-1]=result[k]+result[k-1];}if(p==2)result[k-1]=result[k]>result[k-1]?result[k-1]:result[k];if(p==3)result[k-1]=result[k]>result[k-1]?result[k]:result[k-1];i++;}elsei++;}printf("%d\n",result[0]);}return 0; }
AC碼:
#include<stdio.h> char str[1005]; int i; int eval() {int x=0,a,b;while(str[i]==','||str[i]==')')i++;if(str[i+1]=='d'){i=i+4;return eval()+eval();}if(str[i+1]=='i'){i=i+4;a=eval();b=eval();return a<b?a:b;}if(str[i+1]=='a'){i=i+4;a=eval();b=eval();return a>b?a:b;}while(str[i]>='0'&&str[i]<='9'){x=x*10+str[i]-'0';i++;}return x; } int main() {int T;scanf("%d",&T);while(T--){scanf("%s",str);i=0;printf("%d\n",eval());}return 0; }

總結

以上是生活随笔為你收集整理的NYOJ 305 表达式求值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。