NYOJ 2 括号配对问题 模拟栈【解析算法】

原创 2015年11月18日 10:55:27

括号配对问题

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

Yes

来源
网络
上传者
naonao

模拟栈
 
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Sstack
{
    char sign[10010];
    int top;
};
void initstack(Sstack &s)
{
    s.top=-1;
}
bool isemptystack(Sstack &s)
{
    return s.top==-1?1:0;
}
int pushstack(Sstack &s,char c)
{
    s.sign[++s.top]=c;
    return 1;
}
int popstack(Sstack &s)
{  if(isemptystack(s))
   return 0;
    s.top--;
    return 1;

}
char topstack(Sstack &s)
{
    if(isemptystack(s))
    return 0;
    return s.sign[s.top];
}
int main()
{
    Sstack s;
    char a[10010];
    int n,i,bj,len;
    scanf("%d",&n);
    while(n--)
    {   bj=1;
        initstack(s);
        memset(a,0,sizeof(a));
        scanf("%s",a);
        len=strlen(a);
        for(i=0;i<len;i++)
        {
            if(a[i]=='['||a[i]=='(')
               pushstack(s,a[i]);
            else if(a[i]==']')
            {
                if(isemptystack(s)||topstack(s)!='[') bj=0;
                else popstack(s);
            }
            else if(a[i]==')')
            {
                if(isemptystack(s)||topstack(s)!='(') bj=0;
                else popstack(s);

            }
        }
        if(!isemptystack(s))
        bj=0;
        if(bj==1)
        printf("Yes\n");
        else
        printf("No\n");
    }
}
        



版权声明:本文为博主原创文章,未经博主允许不得转载。

NYOJ:2 括号配对问题(初识栈)

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(...
  • zugofn
  • zugofn
  • 2016年07月21日 08:37
  • 210

NYOJ 2 括号配对问题 (栈 stack)

括号配对问题 思路: 用 栈的 先进后出 模拟 判断 括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查...

NYOJ 2 括号配对问题(栈)

http://acm.nyist.net/JudgeOnline/problem.php?pid=2   1、我的代码: #include #include using namespac...
  • Justme0
  • Justme0
  • 2012年04月04日 00:52
  • 2898

NYOJ-2-括号配对问题

括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0...

NYOJ-2 括号配对问题

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(...

nyoj_2 括号配对问题

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(...

NYOJ 2 括号配对问题

描述现在,有一行括号序列,请你检查这行括号是否配对。输入第一行输入一个数N(0 < N...

nyoj 2 括号配对问题

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0输出每组输入...

NYoj 2 括号配对问题

括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0输出每组输入数据的...

NYOJ- 2 括号配对问题

括号配对问题描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NYOJ 2 括号配对问题 模拟栈【解析算法】
举报原因:
原因补充:

(最多只允许输入30个字)