本文主要是介绍NYOJ-2-括号配对问题-2013年09月09日09:32:18,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
括号配对问题
时间限制: 3000 ms | 内存限制: 65535 KB
难度: 3
- 描述
- 现在,有一行括号序列,请你检查这行括号是否配对。
- 输入
- 第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符 输出
- 每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No 样例输入
-
3 [(]) (]) ([[]()])
样例输出 -
No No Yes
# include <stdio.h>
# include <string.h>char s[10005];
char stack[100];int main()
{int N,top,len,i;scanf("%d",&N);while(N--){memset(stack,0,sizeof(stack));getchar();scanf("%s",s);top = 1;len = strlen(s);for(i=0;i<len;){if(s[i] == '('){stack[top++] = '(';i++;}else if(s[i] == '['){stack[top++] = '[';i++;}else if(s[i] == ')'){if(stack[top-1] == '(')stack[--top] = ' ';elsestack[top++] = ')';i++;}else if(s[i] == ']'){if(stack[top-1] == '[')stack[--top] = ' ';elsestack[top++] = ']';i++;}}if(top==1)printf("Yes\n");elseprintf("No\n");}return 0;
}
这篇关于NYOJ-2-括号配对问题-2013年09月09日09:32:18的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!