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

栈 —— 数据结构基础刷题路程

一、P1739 表达式括号匹配 - 洛谷

算法代码:

#include<bits/stdc++.h>
using namespace std;
const int N=300008;
struct mystack
{
	int a[N];
	int t=-1;
	//压栈
	void push(int data)
	{
		a[++t]=data;	
	} 
	
	//取栈顶元素
	int top()
	{
		return a[t];	
	} 
	
	//弹出栈顶元素
	void pop()
	{
		if(t>-1)
		{
			t--;	
		}	
	} 
	
	//取栈的大小
	int size()
	{
		return t+1;	
	} 
	
	//判空
	int empty()
	{
		return t=-1?1:0;	
	} 
};
int main()
{
	mystack st;
	char x;
	while(cin>>x)
	{
		if(x=='@')
		{
			break;
		}
		if(x=='(')
		{
			st.push(x);
		}
		if(x==')')
		{
			if(st.empty())
			{
				cout<<"NO";
			}
			else
			{
				st.pop();
			}
		}
	}
	
	if(st.empty())
	{
		cout<<"YES";
	}
	else
	{
		cout<<"NO";
	}
	return 0;	
} 

二、P1734 - [NewOJ Contest 4] 排列 - New Online Judge

算法代码: 

#include<bits/stdc++.h>
using namespace std;
const int N=300008;
int a[N]; 
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	stack<int> st;
	long long ans=0;
	
	for(int i=1;i<=n;i++)
	{
		while(!st.empty()&&st.top()<a[i])
		{
			st.pop();
			if(!st.empty())
			{
				int last=st.top();
				ans+=(i-last+1);
			}
		}
		st.push(a[i]);
	}
	ans+=(n-1)*2;
	cout<<ans;
	return 0;	
} 

三、1.妮妮的神秘宝箱 - 蓝桥云课

算法代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    cin >> s;
    stack<char> st;

    for (char c : s) {
        if (c == '(' || c == '[' || c == '{') {
            st.push(c);
        } else if (c == ')' || c == ']' || c == '}') {
            if (st.empty()) {
                cout << "N";  // 统一输出为 "N"
                return 0;
            }
            char _top = st.top();
            if ((c == ')' && _top == '(') || 
                  (c == ']' && _top == '[') || 
                  (c == '}' && _top == '{')) {
                st.pop();
            }
            else
            {
                cout << "N";
                return 0;
            } 
        }
        // 忽略其他字符(如 '.')
    }

    cout << (st.empty() ? "Y" : "N");
    return 0;
}

四、1.小蓝的括号串1 - 蓝桥云课

算法代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    stack<char> st;
    int n;
    cin>>n;
    char ch;
    while(cin>>ch)
    {
        if(ch=='(')
        {
            st.push(ch);
        }
        if(ch==')')
        {
            if(st.empty())
            {
                cout<<"No";
                return 0;
            }
            char _top=st.top();
            if(_top=='('&&ch==')')
            {
                st.pop();
            }
        }
    }

    if(st.empty())
    {
        cout<<"Yes";
    }
    else
    {
        cout<<"No";
    }
    return 0;
}

五、1.小邋遢的衣橱 - 蓝桥云课

算法代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n,i;
  string t1,t2,t3;
  stack<string> a;
  cin>>n;
  for(i=0;i<n;i++)
  {
    cin>>t1>>t2;
    if(t1=="in")
      a.push(t2);
    if(t1=="out")
    {
      if(a.empty())
        return 0;
      for(t3=a.top();t3!=t2;a.pop())
      {
        if(a.empty())
          return 0;
        t3=a.top();
      }
    }
  }
  if(a.empty())
    cout<<"Empty";
  else
    cout<<a.top();
  return 0;
}
http://www.dtcms.com/a/107051.html

相关文章:

  • Linux: 进程信号初识
  • 批量提取 PDF 文档中指定页为新的 PDF 文档
  • 【结肠AI分割论文合集1(2021~2023年份)】A survey1
  • 深入探索Redisson:用法全解析及在微服务中的关键应用
  • UCOS和RTOS的区别
  • 算法:双指针法--计算两数之和
  • 数据驱动的智能BMS革新:机器学习赋能电池健康预测与安全协同优化
  • 重新安装VMware tools为灰色无法点击问题解决|读取电脑文件的共享文件夹方法
  • 蓝桥杯刷题
  • 4月2号.
  • 代码随想录C++算法训练,二叉树(day18)
  • 辛格迪客户案例 | 盛大康成GMP质量合规数字化(QMS)项目
  • ros2--urdf--IMU
  • uperMap GIS基础产品FAQ集锦(20250402)
  • 「2025最新版React+Ant Design+Router+TailwindCss全栈攻略:从零到实战,打造高颜值企业级应用
  • [ 3分钟算法 ] | 递归搜索题目 : 合并两个有序链表(递归版)
  • C++虚继承及其它特性
  • 智谱发布AI Agent“AutoGLM沉思”,开启AI“边想边干”新时代
  • k8s之Ingress讲解
  • 定制化自己的 RAG 框架:结合 LlamaIndex 与自定义优化
  • c加加学习之day01
  • 解锁Azure Speech “通话转录音分析”功能,驶向服务升级高速路
  • 深度解析 Hive Reduce 数量配置:优化原则与计算公式实战指南
  • TISAX认证是什么?如何获得TISAX认证?对企业发展的好处
  • 尚硅谷shell脚本学习
  • DeepSeek+SpringAI家庭AI医生
  • 高压线防外破警示灯:让隐患无处遁形!/ 恒峰智慧科技
  • mapbox基础,加载hillshade山体阴影图层
  • Docker内网部署前后端分离项目-Windows环境下
  • 代码调试:VS调试实操