一本通 5.1 练习 1」括号配对
作者:互联网
#10150. 「一本通 5.1 练习 1」括号配对
内存限制:512 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 上传者: 1bentong题目描述
Hecy 又接了个新任务:BE 处理。BE 中有一类被称为 GBE。
以下是 GBE 的定义:
- 空表达式是 GBE
- 如果表达式
A
是 GBE,则[A]
与(A)
都是 GBE - 如果
A
与B
都是 GBE,那么AB
是 GBE
下面给出一个 BE,求至少添加多少字符能使这个 BE 成为 GBE。
输入格式
输入仅一行,为字符串 BE。
输出格式
输出仅一个整数,表示增加的最少字符数。
样例
样例输入
[])
样例输出
1
数据范围与提示
对于 100%100\%100% 的数据,输入的字符串长度小于 100100100。
显示分类标签
一道区间dp题,要知道题意。。。 按区间dp套路就好 注意加判断#include<bits/stdc++.h> using namespace std; char a[110]; int f[110][110],n; int main(){ scanf("%s",a+1); n=strlen(a+1); for(int i=1;i<=n;i++) f[i][i]=1; for(int len=1;len<n;len++) for(int i=1,j=i+len;j<=n;i++,j++){ f[i][j]=0x3f3f3f3f;//注意这句话只能放这,全部赋极大值会错 for(int k=i;k<j;k++) f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]); if((a[i]=='('&&a[j]==')')||(a[i]=='['&&a[j]==']')) f[i][j]=min(f[i][j],f[i+1][j-1]); } printf("%d",f[1][n]); return 0; }View Code
标签:5.1,GBE,dp,int,样例,括号,110,配对,输入 来源: https://www.cnblogs.com/plysc/p/10547887.html