CH1801

news/2025/3/16 19:45:07/

括号画家
Candela是一名漫画家,她有一个奇特的爱好,就是在纸上画括号。这一天,刚刚起床的Candela画了一排括号序列,其中包含小括号()、中括号[]和大括号{},总长度为N。这排随意绘制的括号序列显得杂乱无章,于是Candela定义了什么样的括号序列是美观的:
(1) 空的括号序列是美观的;
(2) 若括号序列A是美观的,则括号序列(A)、[A]、{A}也是美观的;
(3) 若括号序列A、B都是美观的,则括号序列AB也是美观的;
例如 (){} 是美观的括号序列,而 )({)[}]( 则不是。
现在Candela想在她绘制的括号序列中,找出其中连续的一段,满足这段子序列是美观的,并且长度尽量大。你能帮帮她吗?
输入:
第一行1个整数N,第二行1个长度为N的括号序列。
各个测试点的N的大小:5,10,50,100,100,1000,1000,10000,10000,10000
输出:
一个整数,表示最长的美观的连续子序列的长度。

思路:
人都给我做傻了,搞了一上午。。。
大概就是保存上一个失败的位置,每次匹配成功就算一下这次用了多少字符,大概就是这样

对于代码:
中间有好长一节是用来测试的,tans是标准答案,ans是我算出来的答案,如果不一样我就输出一系列信息,如果最后没有输出说明代码是对的。调试的时候把数据文件复制到文件夹就行了,很方便的。

#include <cstdio>
#include <iostream>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>#define INF 0x3f3f3f3f
#define IMAX 2147483646
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned intusing namespace std;int s, n,ans;
char str[11111], st[11111];
int sta[11111];int main() {int t = 12;while (t--) {char iname[555] = "";char oname[555] = "";sprintf(iname, "sequence%d.in", t+1);sprintf(oname, "sequence%d.out", t+1);freopen(iname, "r", stdin);scanf("%s", str);n = strlen(str);ans = 0;s = 1;sta[0] = -1;st[0] = '9';for (int i = 0; i < n; i++) {if (str[i] == ')'||str[i] == '}'||str[i]==']') {if (s != 1 && ((str[i] == ')'&&st[s - 1] == '(')|| (str[i] == ']'&&st[s - 1] == '[')|| (str[i] == '}'&&st[s - 1] == '{'))) {s--;ans = max(ans, i - sta[s - 1]);}else {while (s > 1)s--;sta[0] = i;}continue;}sta[s] = i;st[s++] = str[i];}//printf("%d\n", ans);FILE *fp = fopen(oname, "r");int tans = 0;fscanf(fp, "%d", &tans);fclose(fp);if (tans != ans)  printf("case:%d: %s\n %d %d\n",t+1, str , tans, ans);}return 0;
}

http://www.ppmy.cn/news/150152.html

相关文章

T1008

分支结构&#xff08;switch语句 &#xff09;&#xff1a;四兄弟 要求&#xff1a; 1.输入运算法对a&#xff0c;b进行运算 方案 1.对于Q1: 为了避免过多的if else语句造成的代码冗余 使用switch语句 switch语句算法模版&#xff1a; 用处&#xff1a;充当算法的分支结…

SP800_186_OverView

文章目录 2. Overview of Elliptic Curves2.1 Non-binary Curves2.1.1 Curves in Short-Weierstrass Form2.1.2 Montgomery Curves2.1.3 Twisted Edwards Curves 2.2 Binary Curves2.2.1. Curves in Short-Weierstrass Form 3. Recommended Curves for U.S. Federal Government…

牛客网刷题学习SQL(七)

SQL27 查看不同年龄段的用户明细 题目分析&#xff1a; 想要将用户划分为20岁以下&#xff0c;20-24岁&#xff0c;25岁及以上三个年龄段&#xff0c;分别查看不同年龄段用户的明细情况&#xff0c;请取出相应数据。&#xff08;注&#xff1a;若年龄为空请返回其他。&#xff…

XFX9500GT TRUCK SIMULATION CUDA

各位&#xff0c;中秋刚过&#xff0c;给大家拜个晚年:)。 闲话少说。中秋前日&#xff0c;去电脑城买了一块9500GT&#xff0c;XFX的&#xff0c;听网上的朋友们说XFX做工不错&#xff0c;再加上我的主要目的不是玩游戏&#xff0c;所以就买了它。JS开始死活要500以上&#x…

英伟达linux官方驱动下载,下载:NVIDIA Linux官方正式驱动177.80版

过去几个月来NVIDIA连续发布了多款测试版驱动&#xff0c;177.67、177.68、170.70、177.76、177.78。今天NV发布了一款177.80官方正式版驱动对之前的测试版驱动做了个总结&#xff0c;正式支持GeForce GTX系列显卡&#xff0c;修正文本再现错误及其他20多项Bug。此外&#xff0…

Opencv2.3nbsp;图像特征检测总结

原文地址&#xff1a;Opencv2.3 图像特征检测总结 作者&#xff1a;zhliang 图像特征检测总结 图像特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息&#xff0c;决定每个图像的点是否属于一个图像特征。本文主要探讨如何提取图像中的“角点”这一…

没出双核以前无盘服务器都是单核,无盘实用经验附加锐起XP一圈半进系统

服务器配置&#xff1a; 处理器双核2.4G以上即可。其实带机量最主要靠的硬盘。 如果你现在用SATA做无盘的话&#xff0c;当你用SAS 15K硬盘&#xff0c;你就会发现客户机性能几倍飞涨&#xff0c;钱花的绝对值得如果你依然用SATA话当我没说。 桌面级电脑主板所配的网卡&#xf…

测试显卡的软件叫游戏什么,显卡测试软件哪个好

显卡测试软件哪个好 3DMARK063DMark06于2006年1月17日发布&#xff0c;主要使用最新一代游戏技术衡量DirectX 9级别的3D硬件。此前的3DMark都是随着新版DirectX和新一代硬件的发布而推出&#xff0c;在一定程度上限制了3DMark对最新硬件性能的充分挖掘。现在&#xff0c;Direct…