模擬,括號匹配——Parentheses Balance
阿新 • • 發佈:2019-01-28
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.
A sequence of Yes or No on the output file.
3 ([]) (([()]))) ([()[]()])()
Yes No YesMiguel Revilla
2000-08-14 括號匹配,只要能成功匹配即可,注意輸出格式
#include <stdio.h> #include <string.h> int main() { char st[1000]; int n,m,i,j,k,len; char zhan[500]; scanf("%d%*c",&n); while(n--) { k = 1; gets(st); len = strlen(st); int low = -1,high = -1; for(i = 0 ; i < len ; i++) { if(st[i] == '(' || st[i] == '[') { zhan[++high] = st[i]; } else if(st[i] == ')') { if(zhan[high] == '(') high--; else { printf("No\n"); k = 0; break; } } else if(st[i] == ']') { if(zhan[high] == '[') high--; else { printf("No\n"); k = 0; break; } } } if(i == len && high == -1) printf("Yes\n"); else if(k == 1) { printf("No\n"); } } return 0; }