欢迎访问https://blog.csdn.net/lxt_Lucia~~
宇宙第一小仙女\(^o^)/~~萌量爆表求带飞=≡Σ((( つ^o^)つ~dalao们点个关注呗~~
先来个最简单的~
Problem 1 is coming~~~~
Description
现在有一种只包括左右小括号(“(”和“)”)和空格(” “)的字符串序列,请你判断括号是否匹配,如果匹配就输出Yes,不匹配输出No。
Input
输入数据第一行输入一个T(0≤T≤100),表示测试数据的组数。
接下来有T行测试数据,每行有一个符合题意的字符串,字符串长度不超过500。
Output
每组测试数据,先输出一个”Case %d:“,%d表示第几组测试数据。接着,如果字符串括号匹配,输出Yes,否则,输出No。具体输出格式参考下面输出样例。
Sample Input
2 ( ()) )(
Sample Output
Case 1:Yes Case 2:No
—————————————————————–我只是第一个问题的分界线——————————————————–
#include<bits/stdc++.h>
using namespace std;
stack<char>a,b;
int main()
{
int T,i,j,p,q;
char s[11000];
scanf("%d",&T);
getchar();
for(i=1;i<=T;i++){
gets(s);
for(j=0;s[j];j++){
if(s[j]=='(')
a.push(s[j]);
else if(s[j]==')'){
if(!a.empty())
a.pop();
else b.push(s[j]);
}
}
p=a.size();
q=b.size();
if(p==0&&q==0)
printf("Case %d:Yes\n",i);
else printf("Case %d:No\n",i);
while(!a.empty())
a.pop();
while(!b.empty())
b.pop();
}
return 0;
}
下面进阶到多种括号,注意{ ( } )这种是不匹配的哟yo~
Problem 2 is coming~~~~
Description
假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”和花括号“{”和“ ”,且这三种括号可按任意的次序嵌套使用(如:…[…{… …[…]…]…[…]…(…)…)。编写判别给定表达式中所含括号是否正确配对出现的算法。输出结果YES 或者 NO。
Input
5+{[2X5]+2}
Output
YES
Sample Input
8-[{2+7]}
Sample Output
NO
—————————————————————–我只是第二个题的分界线————————————————————-
#include<bits/stdc++.h>
using namespace std;
stack<char>a,b;
int main()
{
int j,p,q,t;
char s[11000];
gets(s);
for(j=0;s[j];j++){
if(s[j]=='('||s[j]=='['||s[j]=='{')
a.push(s[j]);
else if(s[j]==')'||s[j]==']'||s[j]=='}'){
t=a.top();
if((t=='('&&s[j]==')')||(t=='['&&s[j]==']')||(t=='{'&&s[j]=='}'))
if(!a.empty())
a.pop();
else b.push(s[j]);
}
}
p=a.size();
q=b.size();
if(p==0&&q==0)
printf("YES\n");
else printf("NO\n");
return 0;
}
据说括号匹配也是一道很经典的例子呃…所以顺便关注我一下吧哈哈哈~
宇宙第一小仙女\(^o^)/~~萌量爆表求带飞=≡Σ((( つ^o^)つ~dalao们点个关注呗~~
欢迎访问https://blog.csdn.net/lxt_Lucia~~