1. 程式人生 > 其它 >洛谷 P1449 字尾表示式

洛谷 P1449 字尾表示式

題目描述

所謂字尾表示式是指這樣的一個表示式:式中不再引用括號,運算子號放在兩個運算物件之後,所有計算按運算子號出現的順序,嚴格地由左而右新進行(不用考慮運算子的優先順序)。

如:3*(5–2)+7對應的字尾表示式為:3.5.2.-*7.+@。’@’為表示式的結束符號。‘.’為運算元的結束符號。

輸入格式

輸入:字尾表示式

輸出格式

輸出:表示式的值

輸入輸出樣例

輸入 #1
3.5.2.-*7.+@
輸出 #1
16

說明/提示

字串長度,1000內。

分析

將數字先存下來,遇到句號轉化成數字。熬夜狀態差,碼風稀爛。

#include<bits/stdc++.h>
using
namespace std; stack<int> num; int main() { string a; string l=""; cin>>a; int n=a.size(); for(int i=0;i<n;i++) { if(a[i]=='.') { int new_num=0; int l_size=l.size(); for(int i=0;i<l_size;i++) { new_num
=new_num*10; new_num+=l[i]-'0';//每次乘以10然後加上去 } l="";//初始化 num.push(new_num); }//讀完數字直接壓進去 if(a[i]>='0'&&a[i]<='9')//如果是數字 { l+=a[i];//先統計起來 } else if(a[i]=='-') { int b=num.top(); num.pop();
int c=num.top(); num.pop(); num.push(c-b); } else if(a[i]=='+') { int b=num.top(); num.pop(); int c=num.top(); num.pop(); num.push(c+b); } else if(a[i]=='*') { int b=num.top(); num.pop(); int c=num.top(); num.pop(); num.push(c*b); } else if(a[i]=='/') { int b=num.top(); num.pop(); int c=num.top(); num.pop(); num.push(c/b); } } cout<<num.top()<<endl; return 0; }