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;
}
相关推荐
NAGNIP10 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
端平入洛17 小时前
delete又未完全delete
c++
颜酱19 小时前
单调栈:从模板到实战
javascript·后端·算法
CoovallyAIHub1 天前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
祈安_1 天前
C语言内存函数
c语言·后端
NAGNIP1 天前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试