NYOJ_2

来源:互联网 发布:简易平面图软件手机 编辑:程序博客网 时间:2024/06/06 04:56
题目如下:

描述


现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3[(])(])([[]()])
样例输出
NoNoYes

AC代码:

#include <stdio.h>int main(){char s[10002];int n;int current_pos;scanf("%d", &n);while(n){--n;scanf("%s", s);int  i = 0;char s_first[10000] = "\0";for(current_pos = 0; s[i] != '\0'; ++i){switch(s[i]){case '[':s_first[current_pos] = '[';++current_pos;break;case '(':s_first[current_pos] = '(';++current_pos;break;case ']':if(0 == current_pos){current_pos = -2;break;}--current_pos;if('[' == s_first[current_pos]){s_first[current_pos] = '\0';}else{current_pos = -2;}break;case ')':if(0 == current_pos){current_pos = -2;break;}--current_pos;if('(' == s_first[current_pos]){s_first[current_pos] = '\0';}else{current_pos = -2;}break;default :current_pos = -2;}if(-2 == current_pos){break;}}if(0 == current_pos){printf("Yes\n");}else{printf("No\n");}}return 0;}典型的数据结构中的栈(先进后出),越后面进来的括号被匹配的迫切程度越高



0 0
原创粉丝点击