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;
}
相关推荐
真的想上岸啊28 分钟前
c语言第一个小游戏:贪吃蛇小游戏05
c语言·算法·链表
格林威36 分钟前
Baumer工业相机堡盟工业相机的工业视觉是否可以在室外可以做视觉检测项目
c++·人工智能·数码相机·计算机视觉·视觉检测
追烽少年x38 分钟前
C++11异步编程 --- async
c++
元亓亓亓1 小时前
LeetCode热题100--206.反转链表--简单
算法·leetcode·链表
诚丞成1 小时前
BFS算法篇——从晨曦到星辰,BFS算法在多源最短路径问题中的诗意航行(上)
java·算法·宽度优先
hongjianMa1 小时前
2024睿抗编程赛国赛-题解
算法·深度优先·图论·caip
czy87874751 小时前
两种常见的C语言实现64位无符号整数乘以64位无符号整数的实现方法
c语言·算法
虾球xz2 小时前
游戏引擎学习第277天:稀疏实体系统
c++·学习·游戏引擎
想睡hhh2 小时前
c++进阶——哈希表的实现
开发语言·数据结构·c++·散列表·哈希
yzx9910132 小时前
支持向量机案例
算法·机器学习·支持向量机