UVA——673 Parentheses Balance

 

题目:

 

         Parentheses Balance
 

Problem Description

You are given a string consisting of parentheses () and []. A string of this type is said to becorrect:

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

题目描述:

         括号匹配问题,用栈来写的,比较坑的是,当读入空行时要判为Yes。当时我用的scanf,然后就用%c读的,再手动把换行符换成\0。

解题代码:

 
#include<stdio.h>  #include<string.h> int f[110][110]; char e[150]; int a,b,c,i,j; typedef struct q { char e[150]; int top; }q; int main() { q w; int t; while(scanf("%d",&a)!=EOF){ getchar(); while(a -- ){ memset(e,'\0',sizeof(e)); i=0; while(1){ scanf("%c",&e[i]); if(e[i] == '\n'){ e[i] = '\0'; break; } i ++; } memset(w.e,'\0',sizeof(w.e)); w.top = 0; t = 0; if(strlen(e) == 0){ printf("Yes\n"); continue; } for(i = 0;i < strlen(e);i ++){ if(e[i] == '(' || e[i] == '['){ w.e[w.top++] = e[i]; } else{ if(w.top && (w.e[w.top-1] == '[' && e[i] == ']' || w.e[w.top-1] == '(' && e[i] == ')')){ w.top --; } else{ t = 1; break; } } } if(t || w.top) printf("No\n"); else printf("Yes\n"); } } return 0; } 
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值