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

目录

小鱼的数字游戏

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

表达式括号匹配

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

【模板】栈

[B3614 【模板】栈 - 洛谷 | 计算机科学教育新生态 (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()) )

完整代码:

cpp 复制代码
#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

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

完整代码:

cpp 复制代码
#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的栈

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

完整代码:

cpp 复制代码
#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;
}
相关推荐
UnnamedOrange19 分钟前
ROS1 配置代码覆盖率
c++·cmake
沐怡旸21 分钟前
【底层机制】std::unordered_map 扩容机制
c++·面试
沐怡旸21 分钟前
【底层机制】auto 关键字的底层实现机制
c++·面试
wdfk_prog21 分钟前
[Linux]学习笔记系列 -- lib/dump_stack.c 栈回溯打印(Stack Trace Dumping) 内核调试与错误诊断的基石
linux·运维·服务器·c语言·笔记·学习
CoovallyAIHub28 分钟前
医药、零件、饮料瓶盖……SuperSimpleNet让质检“即插即用”
深度学习·算法·计算机视觉
华溢澄30 分钟前
macOS下基于Qt/C++的OpenGL开发环境的搭建
c++·qt·macos·opengl
dragoooon3432 分钟前
[优选算法专题二滑动窗口——串联所有单词的子串]
数据结构·c++·学习·算法·leetcode·学习方法
刃神太酷啦33 分钟前
C++ 异常处理机制:从基础到实践的全面解析----《Hello C++ Wrold!》(20)--(C/C++)
java·c语言·开发语言·c++·qt·算法·leetcode
CYRUS_STUDIO36 分钟前
OLLVM 移植 LLVM18 踩坑:一步步调试修复控制流平坦化
c语言·c++·llvm
将编程培养成爱好1 小时前
C++ 设计模式《外卖菜单展示》
c++·设计模式