zoukankan      html  css  js  c++  java
  • CDZSC_2015寒假新人(4)——搜索

    Description

    Download as PDF
     

     

      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, () 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 

    Yes
    No
    Yes
    

    Miguel Revilla
    2000-08-14

     

    题解:栈。括号匹配问题,左括号全压栈,右括号若是与栈顶匹配,则出栈顶,否则压栈,注意输入有可能是空串,要用 gets() 或 cin.getline() 输入,这坑了我一下,英语文盲的悲剧。详见代码。

     
     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <stack>
     4 using namespace std;
     5 
     6 const int MAX = 256;
     7 char str[MAX];
     8 int Map[MAX];
     9 
    10 
    11 int main()
    12 {
    13 #ifdef CDZSC_OFFLINE
    14     freopen("in.txt", "r", stdin);
    15     freopen("out.txt", "w", stdout);
    16 #endif
    17     Map['('] = -1; Map[')'] = 1;
    18     Map['['] = -2; Map[']'] = 2;
    19 
    20     int t, len;
    21     scanf("%d", &t);
    22     getchar();
    23     while(t--)
    24     {
    25         gets(str);
    26 
    27         len = strlen(str);
    28         stack<char> st;
    29         for(int i = 0; i < len; i++)
    30         {
    31             if(str[i] == '(' || str[i] == '[')
    32             {
    33                 st.push(str[i]);
    34             }
    35             else
    36             {
    37                 if(!st.empty() && !(Map[st.top()] + Map[str[i]]))
    38                 {
    39                     st.pop();
    40                 }
    41                 else
    42                 {
    43                     st.push(str[i]);
    44                 }
    45             }
    46         }
    47         printf("%s
    ", st.empty() ? "Yes" : "No");
    48     }
    49     return 0;
    50 }
    View Code
  • 相关阅读:
    TextBox控件
    Button控件
    WinForm调试输出数据
    使用NPIO操作Excel
    窗体类笔记
    this关键字的使用
    51job招聘.Net职位分析(关于大学生就业的一点建议)
    解决线性表的编程问题
    如何在UWP中统一处理不同设备间的页面回退逻辑
    Python带你轻松进行网页爬虫
  • 原文地址:https://www.cnblogs.com/LiuACG/p/4251334.html
Copyright © 2011-2022 走看看