OpenJudge一类括号匹配问题

问题描述

OpenJudge一类括号匹配问题

总时间限制: 1000ms 内存限制: 65536kB
描述
在程序设计中,常常使用小括号强调表达式的运算顺序,但是,左右小括号必须匹配。现给定一个不多于500个符号的表达式(串),其中可能存在多个小括号,想检查小括号的匹配问题。如果存在小括号不匹配,则输出 mismatch;如果所有小括号匹配,则按左右括号的匹配距离由小到大输出左、右括号的位置;若多个匹配的距离相等,则左括号先出现的匹配先输出;如果整个串中没有小括号,则左右位置均输出0,即 0,0; ,规定,串中第一个符号的位置为1。
匹配距离=右括号位置 - 左括号位置。

例如:
输入为: (x+y*(z-5)*(x+y))*(x+98)
输出为:
6,10
12,16
19,24
1,17
如果输入为 (x+y*(z-5))*x+y)
则不匹配,因为在最后的反括号没有相匹配的正括号。因此,输出:
mismatch

输入
一串符号
输出
按匹配距离的增序输出匹配对的左右位置,逗号间隔;如果距离相同,则按左括号出现的先后顺序输出;如果整个序列中出现不匹配现象,则输出 mismatch;
样例输入
(x+y*(z-5)*(x+y))*(x+98)
样例输出
6,10
12,16
19,24
1,17

时间: 2016-04-20

OpenJudge一类括号匹配问题的相关文章

代码-C/C++ 用顺序表实现的括号匹配问题

问题描述 C/C++ 用顺序表实现的括号匹配问题 我的代码 #include<stdio.h> #include<string.h> #define TRUE 1 #define FALSE 0 typedef struct { char data[100]; int top; }Stack; int InitStack(Stack stack) { stack.top=-1; return TRUE; } int Push(Stack &stackchar &ch

九度题目1153:括号匹配问题

题目1153:括号匹配问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2965 解决:1315 题目描述:     在某个字符串(长度不超过100)中有左括号.右括号和大小写字母:规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右 边且距离最近的右括号匹配.写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号.不能匹配的 左括号用"$"标注,不能匹配的右括号用"?"标注. 输入:     输入包括多组数据,

c语言-C/C++ 简单括号匹配问题

问题描述 C/C++ 简单括号匹配问题 我的程序,运行检测的括号匹配和实际不符麻烦帮忙看下问题 #include<stdio.h> typedef struct { char ch[50]; int top; }SeqStack; int Push(SeqStack &S,char x) { if(S.top==49) return 0; S.top++; S.ch[S.top]=x; return 1; } int Pop(SeqStack &S,char x) { if(S

编程c语言-关于数据结构括号匹配的问题

问题描述 关于数据结构括号匹配的问题 程序写完了,但是一运行就崩了,我不知道错误在哪,求大神指教!下面贴出我的代码: #include #include #include using namespace std; #define SIZE 100 typedef struct StackNode{ char data; struct StackNode *next; }StackNode,*LinkStack; void InitStack(LinkStack &S); void Push(Li

c++的问题-c++括号匹配,用中文输入括号与用英文输入的括号结果不一样

问题描述 c++括号匹配,用中文输入括号与用英文输入的括号结果不一样 用c++匹配括号,用英文输入(()匹配失败,而用中文输入(()却匹配成功??? 解决方案 是不是全角或者半角的问题?

括号匹配问题之Java,哪错了?

问题描述 括号匹配问题:描述现在,有一行括号序列,请你检查这行括号是否配对.输入第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组.数据保证S中只含有"[","]","(",")"四种字符输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No解题

括号匹配

括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个 字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组.数据保证S中只含有"[","]","(",")"四种字符 输出 每组输入数据的输出占一行,如

python正则表达式中的括号匹配问题_python

问题: m = re.findall('[0-9]*4[0-9]*', '[4]') 可以匹配到4. m = re.findall('([0-9])*4([0-9])*', '[4]') 匹配不到4. 这是为什么呢?PS,这个是一个简化的说明,我要用的正则比这个复杂,所以要用到(),表示一个序列的匹配. 补充一点,我放在notepad++中用的时候,两种写法都能匹配出来,不知道为什么python中就不行了. 答案: python的正则中用()会进行匹配,所以返回结果是['',''],就是两个()

NYOJ2(括号匹配)

#include <stdio.h> int main() { int z; scanf("%d",&z); while(z--) { char ch,s[10001]; int top=-1; while((ch=getchar())!='\n')//中间没有空格 { if(ch==')' && top>=0 && s[top]=='(')//top>=0表明栈不空 top--; else if(ch==']' &