首页 > 其他分享 >AT2586 题解

AT2586 题解

时间:2022-08-25 00:15:17浏览次数:103  
标签:匹配 括号 AT2586 题解 ++ len int find

题目传送门

许多人使用栈,然而根本不需要。

先读入整个字符串,然后枚举每个字符。

如果当前字符是左括号,往后搜,有就匹配并消除。

然而消除这个动作太慢了,如果匹配到,只需把它标记为无用字符即可。

如果没有匹配到,表明右括号少了,对应计数器标记

是右括号就往前搜,其余同理。

最后根据计数器补充输出。

满分代码:

#include <iostream>
#include <cstdio>
#include <stack>
using namespace std;
int main()
{
	int len;
	string s;
	scanf("%d", &len);
	cin >> s; 
	string t = s; //操作时会改变原序列,因此要备份一下。 
	int cntL = 0, cntR = 0; //记录匹配完后还剩几个左右括号。 
	
	for (int i = 0; i < len; i++)
	{
		if (s[i] == '(') //往后搜。 
		{
			bool Is_find = true;
			for (int j = i+1; j < len; j++)
				if (s[j] == ')')  //匹配到了。 
				{
					Is_find = false;
					s[i] = s[j] = 'x';
					break;
				}
			if (Is_find) cntR++;   //匹配不到。 
		}
		else if (s[i] == ')') //往前搜。 
		{
			bool Is_find = true;
			for (int j = i-1; j >= 0; j--)
				if (s[j] == '(')
				{
					Is_find = false;
					s[i] = s[j] = 'x';
					break;
				}
			if (Is_find) cntL++;
		}
	}
	for (int i = 1; i <= cntL; i++) printf("(");
	cout << t;
	for (int i = 1; i <= cntR; i++) printf(")");
	printf("\n");  //别忘了换行。 
	return 0;
}

首发:2022-01-28 14:32:21

标签:匹配,括号,AT2586,题解,++,len,int,find
From: https://www.cnblogs.com/liangbowen/p/16622752.html

相关文章

  • AT4276 题解
    小学生又来写题解啦!容易想到,范围内七五三数不会很多,因此尝试暴力搜索,即深搜。参数除了当前的数外,还有三个布尔类型的变量分别表示三、五、七有无出现。每次都判断是否为......
  • P8080 题解
    题目传送门小学生又来写题解啦!你可能会认为,能够使用杯座人数的最大值,就是杯座数量。但结合样例一,若杯座数量大于总人数,只能输出总人数。下一个问题是如何计算杯座数量......
  • SP1163 题解
    题目传送门小学生又来写题解啦!本题显然是字符串模拟,认真维护好每个要求即可。首先先判断是情况一还是情况二,如果同时出现,输出报错信息。我们可以用一个函数实现上述功......
  • CF483A 题解
    题目传送门小学生又来写题解啦!刚看到范围,觉得不能枚举。仔细想一下,其实可以,因为第一组解应该离左边界较近,很快可以出答案。所以,我们可以尝试暴力枚举。最大公约数就用......
  • AT278 题解
    题目传送门小学生又双叒叕来写题解啦!我的思路是,先统计招牌与材料包中不同字母的数量。然后,枚举二十六个字母。对于每个字母,用招牌字母数除以材料包字母数,再向上取整。......
  • AT212 题解
    题目传送门小学生又双叒叕来写题解啦!翻了一下大家的代码,都好长好复杂,其实直接模拟就好了。先说一个巨坑:发现坐标与我们平时不同,所以进行修改。写一个函数,函数作用为找......
  • AT1578 题解
    题目传送门小学生又双叒叕来写题解啦!个人认为这题就考你的理解能力,因此,得先把题读懂。寿司就是01或10字符的组合,减少拆开寿司的次数,本质上就是保留完整的寿司。因......
  • AT4864 题解
    题目传送门显然是贪心题。对于每张优惠券,我们应该给当前最大的物品使用。如果使用普通的数组,每次都找最大值太慢了。因此,我们使用传说神器:优先队列。其他题解都没有说......
  • AT2286 题解
    题目传送门小学生又双叒叕来写题解啦!这题要用到因数个数定理,没学过的童鞋自己了解一下。由于和质数有关,我使用质数筛法。我使用较快的欧拉筛法算质数(想学就做这题)。事......
  • [HNOI2004] L 语言 题解(AC 自动机上 dp)
    前言:原版数据超弱,爆搜就能过(即洛谷里面80分的数据),在此不多说,这里讲的是正解。(如果不是正解我还敢写题解吗)唔······话说洛谷里的题解用的都有状压,蒟蒻表示这题不......