nyoj 括号配对问题

括号配对问题

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 3
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No

Yes


栈的应用:

算法思想

1.顺序扫描字符串

2.当栈为空的时候该字符入栈

3.当该字符与栈顶字符匹配时退出栈顶,否则入栈

4.当字符串扫描完时判断栈是否为空,是的话就说明括号匹配,否则括号不匹配


#include
#include
#include
#include
using namespace std;
int main()
{
    char s[10001];
    int t;
    scanf("%d",&t);
    while(t--)
    {
    	scanf("%s",s);
    	int len=strlen(s);
    	if(len%2!=0)
    		printf("No\n");
		else
		{
		  stack q; 
    	  for(int i=0;i


你可能感兴趣的:(nyoj)