UVa 673 Parentheses Balance (栈)

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6


    673 - Parentheses Balance

    Time limit: 3.000 seconds

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=103&page=show_problem&problem=614

    You are given a string consisting of parentheses () and []. A string of this type is said to be correct:


    if it is the empty string (b) if A and B are correct, AB is correct, (c) (A ) and  [A ]

    Write a program that takes a sequence of strings of this type and check their correctness. Your program can assume that the maximum string length is 128.

    Input


    The file contains a positive integer  n  and a sequence of  n  strings of parentheses  ()  and  [] , one string a line.

    Output


    A sequence of  Yes  or  No  on the output file.

    Sample Input


    3
    ([])
    (([()])))
    ([()[]()])()


    Sample Output

    Yes
    No
    Yes



    技巧:在栈底加一个元素,减少代码量。


    完整代码:

    /*0.029s*/
    
    #include<cstdio>
    #include<cstring>
    #include<stack>
    using namespace std;
    
    stack<char> s;
    char str[130];
    
    int main(void)
    {
    	int t;
    	scanf("%d", &t);
    	getchar();
    	while (t--)
    	{
    		gets(str);
    		int len = strlen(str);
    		if (len & 1)
    			puts("No");
    		else
    		{
    			if (!s.empty())
    				s.pop();
    			s.push('0');///“记号”
    			for (int i = 0; i < len; ++i)
    			{
    				if (str[i] == '(' || str[i] == '[')
    					s.push(str[i]);
    				else if (str[i] == ')')
    				{
    					if (s.top() == '(')
    						s.pop();
    					else
    					{
    						s.push('1');
    						break;
    					}
    				}
    				else/// ']'
    				{
    					if (s.top() == '[')
    						s.pop();
    					else
    					{
    						s.push('1');
    						break;
    					}
    				}
    			}
    			puts(s.top() == '0' ? "Yes" : "No");
    		}
    	}
    	return 0;
    }



  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    “UVa 673 Parentheses Balance (栈)” 的相关文章

    Java: Course2

    一 . static的使用:1 .修饰变量: (静态变量)可以在对象之间共享值2 .修饰函数(静态函数)被static修饰过的函数只能调用被static修饰过的变量或方法,不能以任何方式引用this或super。被static修饰的变量或函数也可以添加权限修饰符(private,public..)。...

    用例图

    用例:在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述。用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的可观察结果。 参与者是系统外部的一个实体,它以某种方式参与了用例的执行过程,通过...

    不同类型库创建临时表

    今天工作中写脚本需要创建临时表,之前只知道创建语法,一些细节的问题用到的时候发现还是有些拿捏不准,特此学习记录。一、hivehive创建临时表有两种方式第一种使用with aswith as 也叫做子查询部分WITH t1 AS (        SELEC...

    PHP中的数值类型转换方法是什么 - 编程语言

    本篇内容介绍了“PHP中的数值类型转换方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! PHP中的数值类型包括整数类型(int)和浮...

    UVa 10892 LCM Cardinality (数论&素因子分解)

    10892 - LCM CardinalityTime limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=467&page=sh...

    POJ 1068 Parencodings (字符串处理)

    Parencodings http://poj.org/problem?id=1068 Time Limit:  1000MS Memory Limit: 10000K Description Let S = s1 s2...s2n...