uva673( Parentheses Balance)—线性表

本文探讨了如何通过编程解决括号平衡问题,包括正则表达式匹配、递归和栈的应用,提供了多种实现方法及其优缺点分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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

#include<stdio.h>
#include<string.h>
#define MAX 200
int main(){
	int n;
	char s[MAX];
	int top;
	scanf("%d",&n);
	getchar();
	char c;
	int flag;
	while(n--){
		flag=0;
		top=-1;
		while((c=getchar())!=EOF&&c!='\n'){
			if(top!=-1){
				if(c==']'){
					if(s[top]=='[')
						top--;
					else
						flag=1;
				}
				else if(c==')'){
					if(s[top]=='(')
						top--;
					else 
						flag=1;
				}
				else{
					top++;
					s[top]=c;
				}
			}
			else{
				top++;
				s[top]=c;
			}
		}
		if(top!=-1){
			flag=1;
		}
		if(flag==1)
			printf("No\n");
		else
			printf("Yes\n");
	}
	return 0;
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值