首页 > 编程语言 >括号配对 C++题解

括号配对 C++题解

时间:2024-11-22 19:43:31浏览次数:3  
标签:GBE int 题解 样例 cin C++ nullptr 括号 tie

括号配对

内存限制: 512 MiB 时间限制: 1000 ms 标准输入输出 题目类型: 传统 评测方式: 文本比较

题目描述

Hecy 又接了个新任务:BE 处理。BE 中有一类被称为 GBE。

以下是 GBE 的定义:

  1. 空表达式是 GBE
  2. 如果表达式 A 是 GBE,则 [A] 与 (A) 都是 GBE
  3. 如果 A 与 B 都是 GBE,那么 AB 是 GBE

下面给出一个 BE,求至少添加多少字符能使这个 BE 成为 GBE。

输入格式

输入仅一行,为字符串 BE。

输出格式

输出仅一个整数,表示增加的最少字符数。

样例

样例输入
复制[])
样例输出
复制1
#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 5;
int n;
int dp[N][N];
string s;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	cin >> s;
	n = s.length();
	for(int i = 1; i <= n; i++) dp[i][i] = 1;
	for(int len = 2; len <= n; len++) {
		for(int l = 1; l <= n - len + 1; l++) {
			int r = len + l - 1;
			dp[l][r] = 1e9;
			if((s[l - 1] == '(' && s[r - 1] == ')') || (s[l - 1] == '[' && s[r - 1] == ']')) dp[l][r] = dp[l + 1][r - 1];
			for(int k = l; k < r; k++) dp[l][r] = min(dp[l][r], dp[l][k] + dp[k + 1][r]);
		} 
	} 
	printf("%d", dp[1][n]);
	return 0;
} 

标签:GBE,int,题解,样例,cin,C++,nullptr,括号,tie
From: https://blog.csdn.net/xxy20110830/article/details/143890226

相关文章

  • 回文质数 C++题解
    回文质数内存限制:64MiB时间限制:1000ms标准输入输出题目类型:传统评测方式:文本比较题目描述因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以151号是回文质数。写一个程序来找出范围[a,b](5<=a<b<=100,000,000)间的所有回文质数;输入......
  • 【C++篇】深度解析 C++ List 容器:底层设计与实现揭秘
    文章目录须知......
  • C++:多态
    目录一、多态的概念二、多态的定义及实现1、多态的构成条件2、虚函数3、虚函数的重写3.1、协变:3.2、析构函数重写:4、override和final关键字5、重载、覆盖、隐藏三、抽象类1、接口继承2、实现继承 一、多态的概念顾名思义,多态就是多种形态,举个例子:比如说买......
  • 什么是 C++ 中的智能指针?有哪些类型的智能指针?
    智能指针的定义在C++中,智能指针是一种类模板,用于管理动态分配的内存。它的主要目的是自动管理内存的生命周期,避免手动释放内存时可能出现的错误,如内存泄漏(忘记释放内存)和悬空指针(访问已释放的内存)。智能指针通过重载*(解引用运算符)和->(成员访问运算符)等运算符,使得它在行为......
  • LeetCode题解:26.删除有序数组中的重复项【Python题解超详细,双指针法】,知识拓展:原地修
    题目描述        给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。        考虑 nums 的唯一元素的数......
  • android开发中,button设置shape后,shape的颜色不生效的问题解决方案
    检查AndroidManifest.xml中的主题的属性<applicationandroid:name=".BaseApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:networkSecurityConf......
  • [题解]P1641 生成字符串
    P1641[SCOI2010]生成字符串由题意可设\(f[i][j]\)表示用了\(i\)个\(0\),\(j\)个\(1\)的答案,那么有转移:\[f[i][j]=\begin{cases}0&i>j\\f[i][j-1]&i=j\\f[i-1][j]+f[i][j-1]&i<j\\\end{cases}\]状态数是\(O(n^2)\),转移是\(O(1)\),总时间复杂度\(O(n^2)\),期望得......
  • 打卡信奥刷题(288)用C++工具信奥P2242[普及组/提高] 公路维修问题
    公路维修问题题目描述由于长期没有得到维修,A国的高速公路上出现了nnn个坑。为了尽快填补好这n......
  • 零基础同时入门并掌握C语言和C++——第一节——选择开发环境
    本系列文章将针对C语言使用VisualStudio2022, C++使用DevC++作为开发环境进行讲解。下面分别讲述选择这两款开发环境的原因和好处:DevC++市面上有很多版本,常见的有蓝色(也就是图片中展示的这款)红色,和小熊猫等。对于初学者来说可能会纠结究竟下载哪款才正确和会不会下载到盗版......
  • [题解]P2151 [SDOI2009] HH去散步
    P2151[SDOI2009]HH去散步发现\(n,m\)非常小而\(t\)非常大,所以果断考虑矩阵。这道题如果不限制“不能立即沿刚刚过来的路回去”,就直接用邻接矩阵求\(t\)次幂然后直接调用\(ans[a][b]\)就好了。加上限制后,我们用点就比较难考虑了,因为点是无方向的。我们可以试着用边来转移,和点......