首页 > 其他分享 >P1241 括号序列

P1241 括号序列

时间:2023-11-21 15:11:24浏览次数:34  
标签:P1241 cnt ch sta vis char 括号 序列 include

P1241 括号序列

RE一半

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stack>

using namespace std;

string s;
char ans[400];
bool vis[400];
int cnt = 0;

stack<pair<int, char>> sta;

bool check(char ch1, char ch2)
{
	return (ch1 == '(' && ch2 == ')') || (ch1 == '[' && ch2 == ']');
}

void print(char a)
{
	if (a == '[' || a == ']')
	{
		cout << "[]";
	}
	if (a == ')' || a == '(')
	{
		cout << "()";
	}
}

int main()
{
	cin >> s;
	for (auto ch : s)
	{
		ans[++cnt] = ch;
		if (ch == '[' || ch == '(')
			sta.push({cnt,ch}); 
		else if (check(sta.top().second, ch))
		{
			vis[cnt] = true;
			vis[sta.top().first] = true;
			sta.pop();
		}
	}
	for (int i = 1; i <= cnt; i++)
	{
		if(!vis[i])
		{
			print(ans[i]);
		}
		else
		{
			cout<<ans[i];
		}
	}
	return 0;
}

问题在于有时候可能栈是空的,这时再执行调取栈顶和出栈等操作就会导致运行时错误。

特判即可。

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stack>

using namespace std;

string s;
char ans[400];
bool vis[400];
int cnt = 0;

stack<pair<int, char>> sta;

bool check(char ch1, char ch2)
{
	return (ch1 == '(' && ch2 == ')') || (ch1 == '[' && ch2 == ']');
}

void print(char a)
{
	if (a == '[' || a == ']')
	{
		cout << "[]";
	}
	if (a == ')' || a == '(')
	{
		cout << "()";
	}
}

int main()
{
	cin >> s;
	for (auto ch : s)
	{
		ans[++cnt] = ch;
		if (ch == '[' || ch == '(')
		{
			sta.push({cnt,ch}); 
			continue;
		}
		if (sta.empty())
		{
			continue;
		}
		if (check(sta.top().second, ch))
		{
			vis[cnt] = true;
			vis[sta.top().first] = true;
			sta.pop();
		}
	}
	for (int i = 1; i <= cnt; i++)
	{
		if(!vis[i])
		{
			print(ans[i]);
		}
		else
		{
			cout<<ans[i];
		}
	}
	return 0;
}

标签:P1241,cnt,ch,sta,vis,char,括号,序列,include
From: https://www.cnblogs.com/kdlyh/p/17846617.html

相关文章

  • 关于AssetBundle禁用TypeTree之后的一些可序列化的问题
    1)关于AssetBundle禁用TypeTree之后的一些可序列化的问题2)启动Unity导入变动的资源时,SingletonScriptableObject 加载不到3)Xcode15构建Unity2022.3的Xcode工程,报错没有兼容的iPhoneSDK这是第361篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术......
  • LY1464 [ 20231112 NOIP 模拟赛 T4 ] 序列计数
    题意给定\(n,m\)。求:\(a_1+a_2+...+a_m=n\)\(1^{a_1}\times2^{a_2}\times...\timesm^{a_m}\equivx(\bmodm)\)对于\(x\in[1,m)\)满足上述条件的方案数。Sol注意到下面的式子等价于:\(1\times1\times1...\times2\times2...\time......
  • 【数学】prufer 序列
    题目描述请实现Prüfer序列和无根树的相互转化。为方便你实现代码,尽管是无根树,我们在读入时仍将\(n\)设为其根。对于一棵无根树,设\(f_{1\dotsn-1}\)为其父亲序列(\(f_i\)表示\(i\)在\(n\)为根时的父亲),设\(p_{1\dotsn-2}\)为其Prüfer序列。另外,对于一个长度......
  • playwright无序列表
    listitem是无序列表,ul和li标签组合•1.水平显示的列表•2.dropdown方式,一般需要鼠标悬停,出现对应的列表 1.#listitem定位,role角色定位到listitem上面在通过filter定位某一个文本page.get_by_role('listitem').filter(has_text='内容').click()2.#先定位点......
  • springboot 控制序列化反序列化示例(接口返回数据处理/接口接收数据处理)
    1.返回Long转JSONpackagecom.mingx.drone.config;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.fasterxml.jackson.databind.SerializerProvider;importjava.io.IOException;/***@Descript......
  • 2023 互测 R2T1 序列的线性做法
    把原题做法GF的系数进行OEIS,发现那个三角形就是Catalan数的GF复合上一个\(xy(1-x)\)的形式。更为奇妙的是,OEIS下面竟然给出了一个通项公式,\(T(n,k)=(-1)^{n-k}{k\choosen-k}C_k\),其中\(C\)是Catalan数列。代入原题的式子,发现答案竟然就是:\[\sum_{i=0}^n(-1)^{n......
  • Java基础知识回顾5-序列化和反序列化
    一、概念Java序列化是指把Java对象转换为字节序列的过程。Java反序列化是指把字节序列恢复为Java对象的过程。序列化作用:在传递和保存对象时,保存对象的完整性和可传递性,对象转换为字节流,可以站网络上传输或者保存在本地文件中。反序列化作用:根据字节流中保存的对象状态及描述信息......
  • java反序列化----CC7利用链学习笔记(Hashtable)
    目录java反序列化----CC7利用链学习笔记(Hashtable)环境搭建利用链java反序列化----CC7利用链学习笔记(Hashtable)环境搭建jdk8u71<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId>......
  • 代码随想录算法训练营第十一天 | ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻
    今日学习的内容●20.有效的括号varisValid=function(s){letstack=[];for(leti=0;i<s.length;i++){lettemp=s[i];if(temp=='('){stack.push(')')continue;}if(......
  • 【Django-DRF用法】多年积累md笔记,第(4)篇:Django-DRF反序列化详解
    本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计RESTAPI,通过使用Django来实现一个RESTAPI为例,明确后端开发RESTAPI要做的最核心工作,然后介绍DjangoRESTframework能帮助我们简化开发RESTAPI的工作。全套DRF笔记直接地址:请移步这里共5章,24子模块,总计1......