zoukankan      html  css  js  c++  java
  • ACM平衡的括号

    Description

    Download as PDF
     

    You are given a string consisting of parentheses () and []. A string 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, () and [] is correct.

    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 

    #include <iostream>
    #include <cstdio>
    #include <string.h>
    #include <stack>
    using namespace std;
    int main()
    {
        char s[150];
        int n;
        cin>>n;
        getchar();
        while(n--)
        {
            gets(s);
            stack<char>v;
            if(strlen(s)==0)
            {
                cout<<"Yes"<<endl;
                continue;
            }
            for(int i=0;i<strlen(s);i++)
            {
                if(s[i]=='('||s[i]=='['||(v.empty()))
                    v.push(s[i]);
                else
                {
                    if((s[i]==')'&&v.top()=='(')||(s[i]==']'&&v.top()=='['))
                        v.pop();
                    else
                        v.push(s[i]);
                }
            }
            if(v.size())
                cout<<"No"<<endl;
            else
                cout<<"Yes"<<endl;
                    
        }
        return 0;
    }

     

     

    Yes
    No
    Yes
    

     解题思路:这个问题推荐用栈来解决,我们小建立一个字符数组用来存储从外面输入进来的字符串。对于'( '和' [ '的字符以及当栈是空的时候我们就往栈里面存放字符,否则如果此时要存入的字符是')'(且栈的顶部的元素是'(')或‘ ]‘(此时的栈的顶部的元素是'[')我们就把栈的顶部的元素拿出栈,否责就继续把字符存入栈。最后我们判断栈是空的还是满的,我们就能确定我们输入的字符串是不是平衡的了;如果栈是空的,我们就输出Yes,表示这个字符串是平衡的,否则输出No。在这个题目中我们还应该注意的是当输入的字符串是空的时候,这时的字符串也是平衡的。

     

  • 相关阅读:
    mysql存储过程基本函数
    Java多线程程序设计详细解析
    手把手教你写Undo、Redo程序
    mysql存储过程学习总结-操作符
    深入解析ATL第二版(ATL8.0)笔记--(2.3节)
    mysql 5.0存储过程学习总结
    php判断浏览器和语言
    Windows7系统环境安装配置PHP开发环境
    Nginx环境下Php安装
    php学习
  • 原文地址:https://www.cnblogs.com/xinxiangqing/p/4669649.html
Copyright © 2011-2022 走看看