当前位置: 首页 > news >正文

蓝桥杯专项复习——stl(stack、queue)

目录

stl:基础知识点击跳转

stack

P1739 表达式括号匹配

P1449 后缀表达式

​编辑​编辑

queue

P1996 约瑟夫问题 

AT_abc298_d [ABC298D] Writing a Numeral

​编辑​编辑​编辑 ​编辑


stl:基础知识点击跳转

stack

P1739 表达式括号匹配

#include<iostream>
#include<stack>

using namespace std;

int main()
{
    string s;
    cin>>s;
    
    stack<char> st;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='(')//入栈
            st.push(s[i]);
        if(s[i]==')')
        {
            if(st.empty())//若栈为空,表示没有与右括号匹配的左括号,直接输出NO
            {
                cout<<"NO"<<endl;
                return 0;
            }
            st.pop();
        }
    }
    if(st.empty())//若栈不为空,说明有多余的左括号
        cout<<"YES"<<endl;
    else
        cout<<"NO"<<endl;
    return 0;
    
}

P1449 后缀表达式

#include<iostream>
#include<stack>
#include<cstring>

using namespace std;

char ch;
int main()
{
    int s=0,x=0,y=0;
    stack<int> st;
    while(ch!='@')
    {
        ch=getchar();
        switch(ch)
        {
            case '+':x=st.top();st.pop();y=st.top();st.pop();st.push(x+y);break;
            case '-':x=st.top();st.pop();y=st.top();st.pop();st.push(y-x);break;
            //注意:由题目知数字压入栈后对于减法一定是下面的数大于上面的,即y>x,所以要y-x而不是x-y 
            case '*':x=st.top();st.pop();y=st.top();st.pop();st.push(x*y);break;
            case '/':x=st.top();st.pop();y=st.top();st.pop();st.push(y/x);break;//同上面 
            case '.':st.push(s);s=0;break;
            default:s=s*10+ch-'0';break;
        }
    }
    cout<<st.top()<<endl;//最后计算结果保留在栈中 
    return 0;
}

queue

P1996 约瑟夫问题 

#include<iostream>
#include<queue>

using namespace std;

int main()
{
    int n,m;
    cin>>n>>m;
    
    queue<int> q;
    for(int i=1;i<=n;i++)
        q.push(i);//入队 
        
    int cnt=1;
    while(q.size())
    {
        int temp=q.front();q.pop();//取出队伍最前元素 
        if(cnt==m)//取出了 
        {
            cout<<temp<<' ';
            cnt=1;
         } 
        else
        {
            q.push(temp);//不是需要输出的元素,将其补入队伍最末尾 
            cnt++;
        }
    }
    return 0;
}

AT_abc298_d [ABC298D] Writing a Numeral

优化方法:快速幂

 

相关文章:

  • hadoop伪分布式搭建--启动过程中如果发现某个datanode出现问题,如何处理?
  • 24.策略模式实现日志
  • leetcode日记(101)填充每个节点的下一个右侧节点指针Ⅱ
  • Deepseek+QuickAPI:打造 MySQL AI 智能体入门篇(一)
  • CVE-2017-5645(使用 docker 搭建)
  • Java面试:集合框架体系
  • 【web逆向】优某愿 字体混淆
  • 提升fcp
  • 八、Prometheus 静态配置(Static Configuration)
  • 仿“东方甄选”直播商城小程序运营平台
  • Git的基本指令
  • 使用爬虫获取自定义API操作API接口
  • 通信协议传输过程中的序列化和反序列化机制
  • 【记】如何理解kotlin中的委托属性?
  • Python的基本知识
  • MySQL学习笔记
  • LSTA: Long Short-Term Attention for Egocentric Action Recognition
  • 【人工智能】【Python】在Scikit-Learn中使用决策树算法(ID3和CART)
  • manim安装
  • 不同路径——1
  • 工商局网站查询入口/深圳短视频推广
  • 电脑销售网站开发论文/品牌整合营销推广
  • 网站+做+app/怎么做网站排名
  • 政府网站建设拓扑图/电脑系统优化工具
  • p2p电影网站开发/深圳seo优化公司搜索引擎优化方案
  • 禅城网站建设企业/常州seo