UVA-673 Parentheses Balance(栈)

题目大意:给一个括号串,看是否匹配。

题目分析:一开始用区间DP写的,超时了。。。

注意:空串合法。

代码如下:

# include<iostream>
# include<cstdio>
# include<stack>
# include<cstring>
# include<algorithm>
using namespace std;

char p[130];
stack<char>s;

bool judge()
{
    int len=strlen(p);
    if(len==0)
        return true;

    while(!s.empty())
        s.pop();
    for(int i=0;i<len;++i){
        if(p[i]==‘(‘||p[i]==‘[‘)
            s.push(p[i]);
        else{
            if(s.empty())
                return false;
            char c=s.top();
            if(c==‘(‘&&p[i]!=‘)‘)
                return false;
            if(c==‘[‘&&p[i]!=‘]‘)
                return false;
            s.pop();
        }
    }
    return s.empty();
}

int main()
{
    int T;
    scanf("%d",&T);
    getchar();
    while(T--)
    {
        gets(p);
        if(judge())
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}

  

时间: 2024-09-30 09:30:56

UVA-673 Parentheses Balance(栈)的相关文章

UVA - 673 - Parentheses Balance (栈的应用!)

UVA - 673 Parentheses Balance Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description  Parentheses Balance  You are given a string consisting of parentheses () and []. A string of this type is said to be co

UVa 673 Parentheses Balance(括号配对 栈)

题意  判断输入的括号序列是否是配对的 栈的基础应用  栈顶元素与输入的字符匹配就出栈咯  注意括号序列可以为空 STL栈 #include <bits/stdc++.h> using namespace std; int main() { int cas; char c; cin >> cas; getchar(); while(cas--) { stack<char> s; while((c = getchar()) != '\n') { if(s.empty())

uva 673 Parentheses Balance

Parentheses Balance 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, (A) and [A] is correct. Write a pr

UVa 673 Parentheses Balance(栈的使用)

 栈 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Description 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, A

UVa 673 Parentheses Balance【栈】

题意:输入一个包含"()"和"[]"的序列,判断是否合法 用栈来模拟,遇到"(",“[”就入栈,遇到')',']'就取出栈顶元素看是否匹配,如果不匹配,则不合法 还有注意一下每次取出栈顶元素的时候判断栈是否为空,如果为空就要跳出循环 注意空串也是合法的串 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmat

UVA 673 Parentheses Balance 解题心得

原题 Description 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, (A ) and [A ] is correct. Write a pr

UVA 637 Parentheses Balance(栈)

题目代号:HDU 1237 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=103&page=show_problem&problem=614 题目原文: Parentheses Balance You are given a string consisting of parentheses () and []. A string of this type

UVa673 Parentheses Balance (栈)

链接:http://acm.hust.edu.cn/vjudge/problem/19102分析:特别要注意空串情况,还有括号奇数个肯定不合法都可以特判. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <stack> 5 using namespace std; 6 7 int main() { 8 int n; 9 cin >> n; getc

UVA Parentheses Balance

题目如下: Parentheses Balance 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, (A) and [A] is correct. W

UVa 673 括号平衡

思路:简单的匹配操作,利用栈. Code: #include<stdio.h> #include<string.h> char stack[135]; int main() { int n; scanf("%d",&n); getchar(); while(n-->0) { memset(stack,0,sizeof(stack)); char c; int top=0; int flag=1; while((c=getchar())!='\n')