题目描述:http://acm.nyist.net/JudgeOnline/problem.php?pid=2
就是输入一串括号,看顺序是不是匹配的。如果括号数是奇数,肯定不匹配啦~这里用到的数据结构的栈,每次比较当前括号与栈顶括号是否匹配,匹配则栈顶元素出栈,否则当前括号入栈。最后检查栈是否为空,为空的话说明全部匹配了。
#include<stdio.h> #include<string.h> char str[10005]; char stack[10005]; bool check() { int nLen; int top = -1; nLen = strlen(str); if(nLen & 1) return false; for(int i = 0; i < nLen; ++i) { if(top > -1 && ((str[i] == ']' && stack[top] == '[') || (str[i] == ')' && stack[top] == '('))) --top; else stack[++top] = str[i]; } if(top < 0) return true; else return false; } int main() { int t; scanf("%d",&t); getchar(); while(t--) { gets(str); if(check()) printf("Yes\n"); else printf("No\n"); } }