zoukankan      html  css  js  c++  java
  • UVA 673 (13.08.17)

     

     Parentheses Balance 

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

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

    Write a program that takes a sequence of strings of this type and checktheir correctness. Your program can assume that the maximum stringlength is 128.

    Input 

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

    Output 

    A sequence of Yes or No on the output file.

    Sample Input 

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

    Sample Output 

    Yes
    No
    Yes
    

    题意: 匹配小括号和中括号~

    做法及其注意点:

    一种情况是遇到 '(' 或 '[', 那么直接放到栈里不解释~

    另一种情况是遇到 ')' 或 ']', 进行判定, 是否前一个是 '(' 或 '[' (注意了, 此时栈也许是空的), 若是, 弹出栈~

    最后判断是否为空~


    AC代码:

    #include<stdio.h>
    #include<stack>
    
    using namespace std;
    
    int main() {
        int T;
        char ch;
        scanf("%d", &T);
        getchar();
        while(T--) {
            stack <char> sta;
    
            while(scanf("%c", &ch)) {
                if(ch == '
    ')
                    break;
                if(sta.empty()) {
                    sta.push(ch);
                    continue;
                }
                if(ch == '(')
                    sta.push(ch);
    
                if(ch == ')') {
                    if(sta.top() == '(')
                        sta.pop();
                    else
                        sta.push(ch);
                }
                if(ch == '[')
                    sta.push(ch);
    
                if(ch == ']') {
                    if(sta.top() == '[')
                        sta.pop();
                    else
                        sta.push(ch);
                }
            }
    
            if(sta.empty())
                printf("Yes
    ");
            else
                printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    Python 递归
    Python 面向过程编程
    Python 协程函数
    Python-第三方库requests详解
    Python 三元表达式
    linux copy
    centos 安装软件
    mysql 权限
    mysql 权限 备份
    android 开发
  • 原文地址:https://www.cnblogs.com/pangblog/p/3266698.html
Copyright © 2011-2022 走看看