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

    平衡的括号 

    这道题目主要运用栈的一些知识。栈在第五章的STL里已经讲了一些,这里再复习一下。

    栈的特点是“先进后出”。头文件是<stack>,声明方式:"stack<int> s"。

    主要有以下几个操作:

    push():把元素压入“栈顶”,又称入栈

    pop():从栈顶把元素弹出,出栈

    top():取栈顶元素(但不删除)

    size():测栈长(个数)

    empty():判断栈是否为空

    这是我对栈的初步总结。

    下面仔细看一下这道题:

    题目大意:

    输入一个包含“()”和“【】”的括号序列,判断是否合法。具体规则如下:(1)空串合法;(2)如果A和B都合法,则AB合法;(3)如果A合法则(A)和【A】都合法。

    题目分析:

    先要测出字符串的长度,如果串长==0,是合法的,输出Yes。再判断是否为括号符,将括号符入栈;再判断是否有匹配的括号符,判断j的值,j=0或-1,则符合平衡,输出Yes,否则输出No

    代码:

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<stack>
     5 using namespace std;
     6 
     7 const int maxn = 130;
     8 char c[maxn],m[maxn];
     9 
    10 int main()
    11 {
    12     int n,i,j;
    13     scanf("%d",&n);
    14     getchar();
    15     while(n--)
    16     {
    17         gets(c);    
    18         if (strlen(c) == 0)
    19         {
    20             printf("Yes\n");
    21             continue;
    22         }
    23         if(c[0] == ')'||c[0] == ']')
    24         {
    25             printf("No\n");
    26             continue;
    27         }
    28         for(i=0,j=0;i<=strlen(c);i++)
    29         {
    30             if(c[i]!='(' && c[i]!=')' && c[i]!='[' && c[i]!=']' )    //判断c是否为括号符,不是则退出此次循环
    31                 continue;
    32             m[j]=c[i];             //将第一个括号符压入栈底,j指向栈底
    33             if(j==0)              //栈底只有一个元素,使j指向第二个元素
    34             {
    35                 j++;
    36                 continue;
    37             }
    38             if( (m[j-1]=='(' && m[j]==')') || (m[j-1]=='[' && m[j]==']') )//判断是否有匹配的括号符,则j指向栈前元素,否则j 自加
    39                 j--;
    40             else j++;
    41         }
    42         if(j<=0)
    43             printf("Yes\n");//j=0或-1,则符合平衡,输出Yes,否则输出No
    44         else
    45             printf("No\n");
    46     }
    47     return 0;
    48 }

    总结:
    有关栈的知识我看了好久才看明白一些。先是做了一些例题,找了一些关于栈的内容,了解了栈的知识。

    关于栈,我要学习的还有很多,继续加油吧。。。

  • 相关阅读:
    问题 B: 投简历
    问题 C: P4 游戏中的Human角色
    绘制直方图
    绘制条形图
    绘制散点图
    问题 A: E2 驾驭const
    问题 B: 矩形类中运算符重载【C++】
    extjs tips
    extjs
    struts1
  • 原文地址:https://www.cnblogs.com/ttmj865/p/4674433.html
Copyright © 2011-2022 走看看