2024/1/30 备战蓝桥杯 3-1 栈

目录

小鱼的数字游戏

P1427 小鱼的数字游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

表达式括号匹配

P1739 表达式括号匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

【模板】栈

B3614 【模板】栈 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


小鱼的数字游戏

P1427 小鱼的数字游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:模拟+stl的stack

关于stack的操作:

std::stack<type> s :定义一个type类型的栈

s.push(x) :把x放入栈中

s.top() :取出栈顶元素,但不删除

s.pop() :删除栈顶元素

s.size() :返回栈中元素的数量

s.empty() :判断栈中是否为空(栈不空:while(!s.empty()) )

完整代码:

#include <bits/stdc++.h>
#define int long long
signed main() {
    int t;
    std::stack<int> s;
    while (std::cin >> t) {
        if (t == 0)
            break;
        else {
            s.push(t);
        }
    }
    while (!s.empty()) {
        std::cout << s.top() << " ";
        s.pop();
    }
    return 0;
}

表达式括号匹配

P1739 表达式括号匹配 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:模拟+stl的stack

遇到左括号就进栈,遇到右括号并且栈不空的时候,栈顶元素出栈

完整代码:

#include <bits/stdc++.h>
#define int long long
signed main() {
    std::stack<char> st;
    std::string s;
    std::cin >> s;
    int n = s.length();
    s = " " + s;
    int flag = 0;
    for (int i = 1; i <= n; i++) {
        if (s[i] == '(') {
            st.push(s[i]);
        } else if (s[i] == ')' && st.size() != 0) {
            st.pop();
        } else if (s[i] == ')' && st.size() == 0) {
            flag = 1;
        } else if (s[i] == '@') {
            break;
        } else
            continue;
    }
    //std::cout<<flag;
    if (st.empty() && flag == 0) {
        std::cout << "YES\n";
    } else {
        std::cout << "NO\n";
    }
    return 0;
}

【模板】栈

B3614 【模板】栈 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:模拟+stl的栈

注意:题目中数据输入比较大,可以用字符串来存需要输入的数

完整代码:

#include <bits/stdc++.h>
#define int long long
signed main() {
    int t;
    std::cin >> t;
    while (t--) {
        int n;
        std::cin >> n;
        std::stack<std::string> st;
        std::string s, x;
        for (int i = 1; i <= n; i++) {
            std::cin >> s;
            if (s == "push") {
                std::cin >> x;
                st.push(x);
            }
            if (s == "query") {
                if (st.size() == 0) {
                    std::cout << "Anguei!\n";
                } else {
                    std::cout << st.top() << "\n";
                }
            }
            if (s == "pop") {
                if (st.empty()) {
                    std::cout << "Empty\n";
                } else {
                    st.pop();
                }
            }
            if (s == "size") {
                std::cout << st.size() << "\n";
            }
        }
    }
    return 0;
}

相关推荐

  1. 2024/1/30 备战 3-1

    2024-01-31 12:58:01       37 阅读
  2. 2024/1/31 备战 3-2

    2024-01-31 12:58:01       32 阅读
  3. 2024/1/28 备战 1-3

    2024-01-31 12:58:01       34 阅读
  4. 2024/2/1 备战 3-3 二叉树

    2024-01-31 12:58:01       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 12:58:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 12:58:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 12:58:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 12:58:01       18 阅读

热门阅读

  1. arch linux上安装docker

    2024-01-31 12:58:01       35 阅读
  2. docker 的常用命令

    2024-01-31 12:58:01       32 阅读
  3. Reactor简述

    2024-01-31 12:58:01       29 阅读
  4. 四、概要设计说明书(软件工程)

    2024-01-31 12:58:01       27 阅读
  5. C语言K&R圣经笔记 6.8联合体 6.9位域

    2024-01-31 12:58:01       35 阅读
  6. docker 的常用命令

    2024-01-31 12:58:01       29 阅读
  7. 【二叉树专题】最大二叉树

    2024-01-31 12:58:01       29 阅读
  8. RabbitMQ和Kafka对比

    2024-01-31 12:58:01       30 阅读
  9. Android --- Content Provider是使用示例,通俗易懂

    2024-01-31 12:58:01       34 阅读