P1449 后缀表达式

题目链接

 

题目描述

 

所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

 

如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。

 

输入输出格式

输入格式:

 

 

输入:后缀表达式

 

 

输出格式:

 

 

输出:表达式的值

 

 

 

输入输出样例

 

输入样例#1: 复制
3.5.2.-*7.+@
输出样例#1: 复制
16

 

说明

 

字符串长度,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
posted @ 2018-07-01 17:53  孟东行#  阅读(462)  评论(0编辑  收藏  举报