zoukankan      html  css  js  c++  java
  • nyoj--2--括号配对问题(栈函数)

    括号配对问题

    时间限制: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<stack>
    #include<algorithm>
    using namespace std;
    char a[101100];
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	getchar();
    	while(t--)
    	{
    		scanf("%s",a);
    		int l=strlen(a);
    		if(l%2==1)
    		printf("No
    ");
    		else
    		{
    			if(a[0]==']'||a[0]==')')
    			printf("No
    ");
    			else
    			{
    				stack<char>s;
    				for(int i=0;i<l;i++)
    				{
    					if(s.size()==0)
    					s.push(a[i]);
    					else
    					{
    						if(s.top()=='['&&a[i]==']'||s.top()=='('&&a[i]==')')
    						s.pop();
    						else
    						s.push(a[i]);
    					}
    				}
    				if(!s.empty())
    				printf("No
    ");
    				else
    				printf("Yes
    ");
    			}
    		}
    	}
    	return 0;
    }



  • 相关阅读:
    第二阶段站立会议第三天
    第二阶段站立会议第二天
    第二阶段站立会议第一天
    测试计划
    cnblogs用户体验及建议
    第一阶段绩效评估
    第一阶段各组意见回复
    第一阶段团队评价
    站立会议第十天
    站立会议第九天
  • 原文地址:https://www.cnblogs.com/playboy307/p/5273725.html
Copyright © 2011-2022 走看看