zoukankan      html  css  js  c++  java
  • 【洛谷】P1449 后缀表达式

    P1449 后缀表达式

    分析:

    简单的模拟题。

    熟练容器stack的话很容易解决。

    stack,栈,有先进后出的特性。

    比如你有一个箱子,你每放进第一个数时,就往箱底放,放第二个数时就在第一个数的上面放,而这两个数取出时,先取出第二个数,才能取出第一个数。

    详细请看代码

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<stack> // 头文件
     4 using namespace std;
     5 
     6 char c;
     7 stack<int> q; // 声明
     8 
     9 int main()
    10 {
    11     int n = 1, num;
    12     while((c = getchar()) && c != '@'){ // 输入,以 @ 结束
    13         // 对数字的处理,
    14         if(c >= '0' && c <= '9'){
    15             num = c - '0';
    16             if(n != 1) {
    17                 num += q.top() * n; // .top() q 最后放入的数
    18                 q.pop();        // .pop() 去掉 q 最后放入的数
    19                 q.push(num);    // .push(x) 往 q 放进一个数
    20             }
    21             else {
    22                 q.push(num);
    23                 n = 10; // 处理一下数字
    24             }
    25         }
    26         if(c == '.'){ // 输入一个数字完毕,归个位
    27             n = 1;
    28         }
    29 
    30         // 判断运算符
    31         int a, b;
    32         if(c == '+'){
    33             a = q.top(); q.pop();
    34             b = q.top(); q.pop();
    35             a += b;
    36             q.push(a);
    37         }
    38         if(c == '-'){ // 注意被减数与减数
    39             a = q.top(); q.pop();
    40             b = q.top(); q.pop();
    41             b -= a;
    42             q.push(b);
    43         }
    44         if(c == '*'){
    45             a = q.top(); q.pop();
    46             b = q.top(); q.pop();
    47             a *= b;
    48             q.push(a);
    49         }
    50         if(c == '/'){ // 注意被除数与除数
    51             a = q.top(); q.pop();
    52             b = q.top(); q.pop();
    53             b /= a;
    54             q.push(b);
    55         }
    56     }
    57     cout << q.top() << endl; // 输出
    58     return 0;
    59 }
    AC代码
  • 相关阅读:
    爬虫模块BeautifulSoup
    移动端开发概览【webview和touch事件】
    实战JS正则表达式
    相识HTML5 canvas
    运算符中的一些小技巧
    再看Ajax
    跨终端开发必备概念汇总
    谈谈工作,聊聊生活,想想以后
    页面元素坐标和偏移(clientX/pageX/screenX/layerX/offsetWidth/scrollWidth/clientWidth等)相关整理
    CSS3 Flexbox不迷路指南
  • 原文地址:https://www.cnblogs.com/Ayanowww/p/10858754.html
Copyright © 2011-2022 走看看