这道题目是一道比较简单的栈的模拟题目
注意如果输入是空行也要输出Yes,因为没有注意这个果断WA了一次
#include <stdio.h>
#include <string.h>
char str[300];
int len,k;
char stack[300];
void input(int k,int i)
{
stack[k] = str[i];
}
void out(int k)
{
stack[k] = '\0';
}
int main()
{
int n;
scanf("%d%*c",&n);
while(n--)
{
gets(str);
if(str[0] == '\n')
{
printf("Yes\n");
continue;
}
len = strlen(str);
int i,flag = 1;
k = 0;
for(i = 0; i<len; i++)
{
if(str[i] == '(' || str[i] == '[')
{
input(k,i);
k++;
}
else
{
if((str[i] == ')' && stack[k-1] == '(') || (str[i] == ']' && stack[k-1] == '['))
{
out(k);
k--;
}
else
flag = 0;
}
if(!flag)
break;
}
if(!flag || k || len%2)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}