首页 > 代码库 > Parentheses Balance UVA 673
Parentheses Balance UVA 673
说说:
题意就是由字符串中的[]()匹不匹配的问题。解法很简单,搞个栈就搞定了。但是题目中有一个陷阱,那就是字符串为空也是合理的。所以在读取字符串的时候最好使用gets,因为scanf会自动将换行给忽略掉的。
源代码:
#include <stdio.h> #include <string.h> #define MAXN 128+5 int main(){ char stack[MAXN],c,s[MAXN]; int p,T,i,wrong; //freopen("data","r",stdin); scanf("%d\n",&T); while(T--){ p=wrong=0; gets(s); if(strlen(s)==0){//注意字符串为空的情况 printf("Yes\n"); continue; } for(i=0;i<strlen(s);i++){ if(p==0) stack[p++]=s[i]; else if(s[i]==']'){ if(stack[p-1]!='['){ wrong=1; break; } else p--; } else if(s[i]==')'){ if(stack[p-1]!='('){ wrong=1; break; } else p--; } else stack[p++]=s[i]; } if(wrong||p!=0) //结束时栈不为空,也是不合法的 printf("No\n"); else printf("Yes\n"); } return 0; }
Parentheses Balance UVA 673
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。