P1449 后缀表达式
题目描述
所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。
如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。
输入输出格式
输入格式:
输入:后缀表达式
输出格式:
输出:表达式的值
输入输出样例
说明
字符串长度,1000内。
已慢慢找回状态。。。
这些题,,,刚开始还是想不出来
到底怎么码。
都是看了思路之后,,,才明白。
感觉这种都算是思路题吧。
还是基本入栈出栈+字符串。
ac代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 using namespace std; 7 8 char c; 9 long long a[1002],now,i; 10 11 int main() 12 { 13 while((c=getchar())!='@') //记住这种输入方法。 14 { 15 if(c>=48&&c<=57) //如果是数字的话。 16 { 17 now*=10; //因为可能是十位数,,百位数。。。 18 now+=c-48; 19 } 20 else if(c=='.') 21 { 22 a[++i]=now; //a数组存储那些被分隔开的数字。 23 now=0; 24 } 25 else if(c=='+') 26 { 27 a[i-1]=a[i-1]+a[i]; //执行运算操作,重新更新 28 i--; //出栈,走掉。 29 } 30 else if(c=='-') 31 { 32 a[i-1]=a[i-1]-a[i]; 33 i--; 34 } 35 else if(c=='*') 36 { 37 a[i-1]=a[i-1]*a[i]; 38 i--; 39 } 40 else if(c=='/') 41 { 42 a[i-1]=a[i-1]/a[i]; 43 i--; 44 } 45 } 46 printf("%lld",a[1]); //都走掉,最后剩1. 47 return 0; 48 }
如果你不开心,那我就把右边这个帅傻子分享给你吧,
你看,他这么好看,跟个zz一样看着你,你还伤心吗?
真的!这照片盯上他五秒钟就想笑了。
一切都会过去的。
时间时间会给你答案2333