题目来源:点击打开链接
题目信息:栈的简单应用,使用STL栈的头文件做的,遇到左括号入栈,遇到右括号,若栈顶元素是与之配对的左括号,则栈顶元素出栈,否则入栈。
最后,如果栈为空,说明括号全部配对,输出“Yes\n”.否则配对不成功,输出"No\n".(注意大小写)。
源代码:
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
int main()
{
int n;
char a[10005],b[10005];
scanf("%d",&n);
while(n--)
{
stack<char>S;
scanf("%s",a);
int i,l;
l=strlen(a);
for(i=0;i<l;i++)
{
if(a[i]=='['||a[i]=='(')
S.push(a[i]); //进栈
else if(a[i]==']'||a[i]==')')
{
if(!S.empty())
{
if((a[i]==']'&&S.top()=='[')||(a[i]==')'&&S.top()=='('))
S.pop();
else
S.push(a[i]);
}
else
S.push(a[i]);
}
}
if(S.empty())
printf("Yes\n");
else
printf("No\n");
}
return 0;
}