您的位置:首页 > 其它

E-栈--括号匹配

2015-12-04 21:18 316 查看

1

#include<stack>
#include<string.h>
#include<stdio.h>
using namespace std;
char s[2000];
int main()
{
while(gets(s))
{
stack<char >x;
int len=strlen(s);
int z=0;
for(int i=0; i<len ; i++)
{
if(s[i]=='('||s[i]=='['||s[i]=='{')
x.push(s[i]);
if(s[i]==')'||s[i]==']'||s[i]=='}')
{
if (s[i] == '}'&&!x.empty()&&x.top() == '{')x.pop();
else if (s[i] == ')'&&!x.empty()&&x.top() == '(')x.pop();
else if (s[i] == ']'&&!x.empty()&&x.top() == '[')x.pop();
else
{
z++;
break;
}
}
}
if(z==0&&x.empty())printf("yes\n");
else printf("no\n");
}
}


2

//hrbust1054

#include <stdio.h>
#include<algorithm>
#include<cstring>
#include<stack>
#include<iostream>
using namespace std;
int main()
{

char c[1000];
int N,i,d=1;
sca
4000
nf("%d",&N);
while(N--)
{
scanf("%s",&c);
int str=strlen(c);
stack<char> st;
for(i=0;i<str;i++)
{
if(c[i]=='('||c[i]=='{'||c[i]=='[')
st.push(c[i]);
else if(c[i]==')'&&!st.empty()&&st.top()=='(')
st.pop();
else if(c[i]==')'&&!st.empty()&&st.top()!='(')
d=0;
else if(c[i]==')'&&st.empty())
d=0;
else if(c[i]==']'&&!st.empty()&&st.top()=='[')
st.pop();
else if(c[i]==']'&&!st.empty()&&st.top()!='[')
d=0;
else if(c[i]==']'&&st.empty())
d=0;
else if(c[i]=='}'&&!st.empty()&&st.top()=='{')
st.pop();
else if(c[i]=='}'&&!st.empty()&&st.top()!='{')
d=0;
else if(c[i]=='}'&&st.empty())
d=0;
}
if(!st.empty()||d==0)
printf("Invalid\n");
else
printf("Valid\n");
d=1;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: