【UOJ 456】括号匹配 淡淡的烟草味﹌ 2021-10-26 21:44 280阅读 0赞 【题目描述】: 我们给出了“正则括号”序列的归纳定义: 空序列是一个正则括号序列, 如果S是一个正则括号序列,则(s)和\[s\]是正则括号序列, 如果A和B是正则括号序列,则AB是正则括号序列。 没有其他序列是正则括号序列。 例如,下列都是正则括号序列: (), \[\], (()), ()\[\], ()\[()\] 而下列都不是: (, \], )(, (\[)\], (\[(\] 给出一个的只有'(',')','\[','\]'四种括号组成的序列S,你的目标是找到最长的正则括号序列的长度,该序列是S的子序列。子序列即删除部分字符后余下的序列。 例如:给定初始序列(\[(\[\]\])\],最长正则括号子序列是\[(\[\])\]。 【输入描述】: 包含多个测试用例。每个输入测试用例都只有'(',')','\[','\]'的单行组成;每个输入测试的长度在1到100之间,文件的结尾用包含“end”的一行标出,不应该被处理。 【输出描述】: 对于每个输入,程序应该在单行上打印最长可能的正则括号子序列的长度。 【样例输入】: ((())) ()()() (\[\]\]) )\[)( (\[\]\[\]\[) end 【样例输出】: 6 6 4 0 6 【时间限制、数据范围及描述】: 时间:1s 空间:64M 对于 30%的数据:字符串长度小于等于10; 对于100%的数据:字符串长度小于等于100;数据组数<=10; 题解:区间dp啦啦啦、(poj 2955) 1.匹配:dp\[i\]\[j\]=dp\[i+1\]\[j-1\]+2; 2.不匹配:枚举k为断点,然后p\[i\]\[j\]=max(dp\[i\]\[j\],dp\[i\] \[k\]+dp\[k+1\]\[j\]); 3.读入的方式注意一下就行了!是int n=strlen(s+1);不是int n=strlen(s);唉,找好长时间! #include<bits/stdc++.h> #include<iostream> #include<algorithm> #include<queue> #include<cmath> #include<cstring> #include<cstdlib> #include<cstdio> using namespace std; char s[105]; int dp[107][107],n; int main(){ freopen("456.in","r",stdin); freopen("456.out","w",stdout); while(1){ scanf("%s",s+1); if(s[1]=='e' && s[2]=='n') break; memset(dp,0,sizeof(dp)); int n=strlen(s+1); //cout<<n; for(int l=2;l<=n;l++){ for(int i=1; i<=n && i+l-1<=n ;i++){ int j=i+l-1; if(s[i]=='(' && s[j]==')') dp[i][j]=dp[i+1][j-1]+2; if(s[i]=='[' && s[j]==']') dp[i][j]=dp[i+1][j-1]+2; for(int k=i;k<j;k++) dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]); } } printf("%d\n",dp[1][n]); } return 0; } 转载于:https://www.cnblogs.com/wuhu-JJJ/p/11139645.html
相关 【Java】括号匹配 \{\} 括号匹配模式 解题思路 栈 import java.util.Scanner; import java.util.Stack; 心已赠人/ 2022年12月09日 04:53/ 0 赞/ 195 阅读
相关 括号匹配 <table style="width:1615px; margin-bottom:20px; background-color:transparent"> <tbody> 秒速五厘米/ 2022年06月02日 08:53/ 0 赞/ 235 阅读
相关 括号匹配 [题目 括号匹配][Link 1] 一般的括号匹配问题是这样的: 给出一个字符串,判断这个括号匹配是不是合法的括号匹配。如”((” 和 “())”都不是合法的括号匹配 我会带着你远行/ 2022年05月18日 00:55/ 0 赞/ 189 阅读
相关 括号匹配 栈的应用,括号匹配。 经典做法是,遇左括号压入,遇右括号判断,和栈顶配对就继续,不配对或者栈空就错了。最后判断是否为空。 代码有些麻烦。 我是遇左括号压对应的右括号,最后 你的名字/ 2022年05月06日 06:28/ 0 赞/ 233 阅读
相关 括号匹配 题目描述 假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“\[”和“\]”和花括号“\{”和“\}”,且这三种括号可按任意的次序嵌套使用(如:…\ ╰半橙微兮°/ 2022年03月30日 02:28/ 0 赞/ 270 阅读
相关 括号匹配 PTA 02:括号匹配 一、题目 给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,\[ \],\{ \} 冷不防/ 2022年02月27日 15:54/ 0 赞/ 322 阅读
相关 括号匹配 <table> <tbody> <tr> <td colspan="3"> <h2>括号匹配</h2> </td> </tr> <tr> 约定不等于承诺〃/ 2022年01月07日 04:37/ 0 赞/ 304 阅读
相关 括号匹配 include<stdio.h> include<stack> using namespace std; stack <int> s;//定义一 叁歲伎倆/ 2021年12月01日 17:44/ 0 赞/ 307 阅读
相关 【UOJ 456】括号匹配 【题目描述】: 我们给出了“正则括号”序列的归纳定义: 空序列是一个正则括号序列, 如果S是一个正则括号序列,则(s)和\[s\]是正则括号序列, 淡淡的烟草味﹌/ 2021年10月26日 21:44/ 0 赞/ 281 阅读
相关 括号匹配 括号配对问题 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行 怼烎@/ 2021年09月22日 07:20/ 0 赞/ 385 阅读
还没有评论,来说两句吧...