jQuery火箭图标返回顶部代码

SDUT 2134 数据结构实验之栈与队列四:括号匹配

 

数据结构实验之栈与队列四:括号匹配

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

 给你一串字符,不超过50个字符,可能包括括号、数字、字母、标点符号、空格,你的任务是检查这一串字符中的( ) ,[ ],{ }是否匹配。

 

Input

 输入数据有多组,处理到文件结束。

 

Output

 如果匹配就输出“yes”,不匹配输出“no”

 

Sample Input

sin(20+10)
{[}]

Sample Output

yes
no

提示:本题所用到的知识点主要是栈的操作,当遇到左括号就入栈,再判断遇到右括号时栈顶元素是不是左括号,
如果是左右括号都出栈,其他元素也出栈,当栈为空时,即可判断左右括号匹配。如果不空,即为不匹配。

代码实现如下(g++):
#include <bits/stdc++.h>

using namespace std;

int main()
{
    stack<int>t;
    char a[110];
    char b[110];
    int i,top;
    while(gets(a))//注意这里用scanf和cin应该都不对
    {
        top=-1;
        for(i=0;a[i]!='\0';i++)
        {
            if(a[i]=='('||a[i]=='{'||a[i]=='[')
            {
                b[++top]=a[i];
            }
            else if(a[i]==')')
            {
                if(b[top]=='(')
                {
                    top--;
                }
                else
                    break;
            }
            else if(a[i]=='}')
            {
                if(b[top]=='{')
                {
                    top--;
                }
                else
                    break;
            }
            else if(a[i]==']')
            {
                if(b[top]=='[')
                {
                    top--;
                }
                else
                    break;
            }
        }
        if(top==-1&&a[i]==0)
            printf("yes\n");
        else
            printf("no\n");
    }
    return 0;
}


/***************************************************
Result: Accepted
Take time: 0ms
Take Memory: 200KB
****************************************************/

 

posted @ 2018-08-16 21:17  孑丶然  阅读(369)  评论(0)    收藏  举报
Live2D