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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

中缀表达式值(信息学奥赛一本通-T1358)

發布時間:2025/3/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中缀表达式值(信息学奥赛一本通-T1358) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【題目描述】

輸入一個中綴表達式(由0-9組成的運算數、加+減—乘*除/四種運算符、左右小括號組成。注意“—”也可作為負數的標志,表達式以“@”作為結束符),判斷表達式是否合法,如果不合法,請輸出“NO”;否則請把表達式轉換成后綴形式,再求出后綴表達式的值并輸出。
注意:必須用棧操作,不能直接輸出表達式的值。

【輸入】

一行為一個以@結束的字符串。

【輸出】

如果表達式不合法,請輸出“NO”,要求大寫。
如果表達式合法,請輸出計算結果。

【輸入樣例】

1+2*8-9

【輸出樣例】

8

【源程序】

#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<utility> #include<stack> #include<queue> #include<vector> #include<set> #include<map> #define PI acos(-1.0) #define E 1e-9 #define INF 0x3f3f3f3f #define LL long long const int MOD=1000000007; const int N=10000+5; const int dx[]= {-1,1,0,0}; const int dy[]= {0,0,-1,1}; using namespace std;int n,m; stack<int> s1;//操作數棧 stack<char> s2;//運算符棧int lev(char x)//運算符優先級 {if(x=='+'||x=='-')return 1;if(x=='*'||x=='/')return 2;if(x=='^')return 3;return 0; }void calculate(stack<int> &s1,stack<char> &s2)//彈出棧頂元素并計算 {/*取出后彈出棧*/int y=s1.top();s1.pop();int x=s1.top();s1.pop();char z=s2.top();s2.pop();/*根據運算符計算,并壓入棧*/if(z=='+')s1.push(x+y);if(z=='-')s1.push(x-y);if(z=='*')s1.push(x*y);if(z=='/')s1.push(x/y);if(z=='^')s1.push(pow(x,y)); }int c(int x) {return x!=0; } char str[1000000]; int sum[1000000];int main(){scanf("%s",str+1);n=strlen(str+1)-1;//忽略掉@的字符串長度for(int i=1;i<=n;i++)//檢查匹配{sum[i]+=sum[i-1];if(str[i]=='(')sum[i]++;if(str[i]==')')sum[i]--;}bool out=false;for(int i=2;i<=n;i++)if( c(lev(str[i])) && c(lev(str[i-1])) ){out=1;break;}if( ( n==1 && c(lev(str[1])) )||sum[n]||out )//表達式不合法{cout<<"NO"<<endl;return 0;}stack<int> s1;stack<char> s2;int temp=0;bool flag=false;for(int i=1;i<=n;i++){if('0'<=str[i]&&str[i]<='9')//判斷當前字符是否為數字{temp=(temp<<3)+(temp<<1)+str[i]-'0';flag=true;}else{if(flag){s1.push(temp);temp=0;flag=false;}if(str[i]=='('){s2.push(str[i]);continue;}if(str[i]==')'){while(s2.top()!='(')calculate(s1,s2);s2.pop();continue;}while(!s2.empty()&&lev(s2.top())>=lev(str[i]))//優先級判斷calculate(s1,s2);s2.push(str[i]);//運算符入棧}}if(flag){s1.push(temp);temp=0;flag=false;}while(!s2.empty())calculate(s1,s2);cout<<s1.top()<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的中缀表达式值(信息学奥赛一本通-T1358)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久日本视频 | 91麻豆国产福利精品 | 日韩中文字幕av在线 | 久久r视频| h小视频在线观看 | 午夜成人免费视频 | 中文字幕av影视 | 少妇人妻综合久久中文字幕 | 91香蕉视频官网 | 欧美日韩激情视频在线观看 | 欧美国产日韩一区 | 欧美日韩国产一区二区三区在线观看 | 久久国产精品波多野结衣av | 亚洲美女综合网 | 999精品一区 | 韩国三级做爰高潮 | 亚洲丁香色 | 91天堂在线视频 | 受虐m奴xxx在线观看 | 超碰97干| 日韩在线一二三 | 亚洲国产一级 | 青青青国内视频在线观看软件 | 中文字幕亚洲精品在线观看 | 亚洲成人午夜影院 | 网红av在线 | 欧美黄视频 | 韩国三色电费2024免费吗怎么看 | 国产一级aa大片毛片 | 亚洲熟妇无码乱子av电影 | 免费三级大片 | 麻豆天天躁天天揉揉av | 人人爽人人爽人人爽人人爽 | 天天看天天摸 | 色偷偷伊人 | 成人在线观看网址 | 综合色在线视频 | 天堂精品久久 | 亚洲欧美在线成人 | 粗大黑人巨茎大战欧美成人免费看 | 成年人黄色免费网站 | 美国免费黄色片 | 性巴克成人免费网站 | 91免费入口 | 免费观看黄色小视频 | www.国产区| 玖玖爱这里只有精品 | 国产无码精品久久久 | 性爱免费视频 | 国产97视频| 国产情侣自拍av | 亚洲无码精品免费 | 国产精品日韩精品 | 蜜桃视频无码区在线观看 | 波多野结衣黄色片 | 黄色aaa视频| 91国产精品一区 | 精品久久伊人 | 一区二区国产在线 | 国产乱人伦 | 国产女大学生av | 熟妇高潮一区二区三区 | 欧美高清在线观看 | 欧美日韩国产高清 | 久久久久久久一区二区 | 九七在线视频 | 免费观看黄色网址 | 综合亚洲色图 | 精品视频99 | 国产丰满大乳奶水在线视频 | 国产免费二区 | 欧美成人图区 | 中文字幕在线免费视频 | 久久久久国产精品一区 | 91文字幕巨乱亚洲香蕉 | 99re色 | 亚洲午夜精品久久久久久浪潮 | 91麻豆精品国产91 | 中文在线а√在线 | 久草福利资源在线 | 国产毛片aaa | 国产伦理av | aa片在线观看视频在线播放 | 国产精品久久中文字幕 | 国产视频第三页 | 免费看的黄色网 | 加勒比综合网 | 亚洲色图 在线视频 | 男女无套免费视频网站动漫 | 青青青在线 | 国产在线欧美在线 | 美女诱惑一区二区 | 亚洲免费观看视频 | 91成人免费在线观看 | 免费欧美一级视频 | 操人视频在线观看 | 欧美日韩视频在线观看一区 | 人人爽人人爽人人爽人人爽 | 日本黄色三级 |