第三周——后缀表达式
Posted gsq1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三周——后缀表达式相关的知识,希望对你有一定的参考价值。
题目描述
所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。
如:3*(5-2)+73*(5-2)+7 对应的后缀表达式为:3.5.2.-*7.+@3.5.2.-*7.+@。在该式中,@
为表达式的结束符号。.
为操作数的结束符号。
输入格式
输入一行一个字符串 s,表示后缀表达式。
输出格式
输出一个整数,表示表达式的值。
输入输出样例
题目分析:
本题输入的是后缀表达式
后缀表达式的特点是——不用考虑运算符的优先级
遇到运算符就运算
所以,我们很容易就想到了算法——栈
算法分析:
栈特点——先进后出
本题可以使用栈来解决
遇到数字就入栈
遇到符号就出栈、并运算
再把运算后的结果入栈
代码:
#include<iostream>
#include<stack>
using namespace std;
int main()
char t;
stack<int> s;
while(cin>>t&&t!=\'@\')//判断是否结束
if(t>=\'0\'&&t<=\'9\')
int temp=t-\'0\';//保存数字
while(cin>>t&&t>=\'0\'&&t<=\'9\')
temp=temp*10+t-\'0\';//保存数字,是否为多位数字
s.push(temp);//放入栈中
if(t==\'+\')//判断加法
int a=s.top();//取出第一位
s.pop();//删除第一位
int b=s.top();//b就变成了第一位
s.pop();删除
s.push(b+a);将结果放入栈中,继续计算
if(t==\'-\')
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b-a);
if(t==\'/\')
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b/a);
if(t==\'*\')
int a=s.top();
s.pop();
int b=s.top();
s.pop();
s.push(b*a);
cout<<s.top()<<endl;//输出
return 0;
20170522-20170527第三周
less框架的应用
创建后缀为.less的文件
用@去声明一个变量
例@width:100px;
定义时用:
.box{
width:@width
}
mixin混入:将一个类引用到另一个类
例:.box1{ width:500px};
.box2{ .box1}
带参数的混入 自定义类名(参数){属性:参数},使用时将具体值带入
例:Margin(@canshu)
{margin-top:@canshu}
.box{.Margin(100px)}
less中可嵌套编写后编译
.box{
width:400px;
height:400px;
.box1{
width:400px;
height:400px;
}
.box2{
width:400px;
height:400px;
}
}
以上是关于第三周——后缀表达式的主要内容,如果未能解决你的问题,请参考以下文章