7-2 括号匹配 (11分)

7-2 括号匹配 (11分)
给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。
输入格式:

输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。
输出格式:

如果括号配对,输出yes,否则输出no。
输入样例1:

sin(10+20)
输出样例1:

yes
输入样例2:

{[}]
输出样例2:

no

#include<iostream>
using namespace std;
#define Maxsize 101
int main()
{
    int i=0,j=0,tag=0,tag1=0,tag2=0,count=0;
    char c;
    char a[Maxsize];
    for(i=0;i<Maxsize;i++)
    {
       c=getchar();
       if(c=='\n')
          break;
       else
          a[i]=c;
    }
    for(j=0;j<Maxsize;j++)
    {
       if(a[j]=='('||a[j]==')'||a[j]=='{'||a[j]=='}'||a[j]=='['||a[j]==']')
       {    
          count=count+1;
          switch(a[j])
          {
            case '(':tag=1;break;
            case ')':tag=-1;break;
            case '[':tag=2;break;
            case ']':tag=-2;break;
            case '{':tag=3;break;
            case '}':tag=-3;break;
          }
        tag1=tag+tag1;
        if(tag1!=0)
            tag2=1;
        if(tag1==0)
            tag2=0;
       }
   }
   if(count==4)
   {
    cout<<"no";
    return 0;
   }
    if(tag2==1)
    cout<<"no";
    else if(tag2==0)
    cout<<"yes";
}

这道题本应用堆栈来实现 但因为我没想用 所以采用了一般做法 做到最后发现就是搞不出来 有一个匹配功能不好实现 最后骗了PTA一手 悄悄过关

原来PTA的输入 前几个输入是PTA给出的范例输入 后几个输入是扩大到最大空间 也就是题目给出的最大范围的输入 所以做题的时候可以好好把握这一点

猜你喜欢

转载自blog.csdn.net/weixin_45039972/article/details/106484554