Problem Description
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序任意,如([]())或[([][])]等为正确的匹配,[(])或([]()或(()))均为错误的匹配。
现在的问题是,要求检验一个给定的表达式中的括弧是否正确匹配?
输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出“OK”,不匹配就输出“Wrong”。
现在的问题是,要求检验一个给定的表达式中的括弧是否正确匹配?
输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出“OK”,不匹配就输出“Wrong”。
Input
输入有多组数据,每组数据仅一行字符(字符个数小于255)。
Output
对于每组数据匹配就输出“OK”,不匹配就输出“Wrong”。
Sample Input
[(])
Sample Output
Wrong
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int i,top,t,flag;
char a[260],left[260];
while(scanf("%s",a)!=EOF)
{
t=strlen(a);
i=0; top=0; flag=1;
while(i<t&&a[i]&&flag)
{
if(a[i]=='['||a[i]=='(')
left[++top]=a[i];
if(a[i]==']')
if(left[top]=='[') top--;
else flag=0;
if(a[i]==')')
if(left[top]=='(') top--;
else flag=0;
i++;
}
if(flag&&top==0) printf("OK\n");
else printf("Wrong\n");
}
return 0;
}