zoukankan      html  css  js  c++  java
  • UVA 673 Parentheses Balance (栈)

    题意描述:

    给出一段只包含()和[]的字符串,判断是否合法,合法输出YES,不合法输出NO

    规则:

    1、该串为空,则合法

    2、若A合法,B合法,则AB合法

    3、若A合法,则(A)和[A]均合法

    解题思路:

    括号匹配问题,使用栈来解决,需要注意的是用gets来读取,当该串为空时,输出YES

    代码实现:

     1 #include<stdio.h>
     2 #include<string.h>
     3 int f(char a[],int l);
     4 
     5 int main()
     6 {
     7     char a[151];
     8     int T;
     9     
    10     scanf("%d",&T);
    11     getchar();
    12     while(T--)
    13     {
    14         gets(a);
    15         int l=strlen(a);
    16         if(l==0 || f(a,l))//
    17         printf("Yes
    ");
    18         else
    19         printf("No
    ");
    20     }
    21     return 0;
    22 } 
    23 
    24 int f(char a[],int l)
    25 {
    26     char s[151];
    27     int i,top=0;
    28     for(i=0;i<l;i++)
    29     {
    30         s[top++]=a[i];
    31         if(s[top-1]==')' && s[top-2]=='(')    
    32             top-=2;
    33         if(s[top-1]==']' && s[top-2]=='[')
    34             top-=2;
    35     }
    36     if(top==0)
    37     return 1;
    38     else
    39     return 0;
    40 }

    易错分析:

    注意读题,根据题目来写

  • 相关阅读:
    WinCE 与通讯模块
    6174问题
    阶乘因式分解(一)
    三个数从小到大排序
    公约数和公倍数
    水仙花数
    韩信点兵
    5个数求最值
    求转置矩阵问题
    孪生素数问题
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/8343968.html
Copyright © 2011-2022 走看看