![]() |
#2
rjsp2020-12-23 14:36
|
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

#include<cstdio>
#include<cstdlib>
#include<stack>
#include<cstring>
using namespace std;
int main(){
char str[110];
stack<char> stk;
fgets(str, 110, stdin);
str[strcspn(str, "\n")] = 0;
int n = 0;
int i = 0;
while(str[i]!='\0'){
if(str[i]=='(' || str[i]=='[' || str[i]=='{'){ //遇见左括号进栈
stk.push(str[i]);
}
else if(str[i]==')' || str[i]==']' || str[i]=='}'){ //遇见右括号匹配
if(stk.empty()){ //栈为空无法匹配的情况
i++;
continue;
}
else{ //栈不为空,左右对应可匹配的情况
if(str[i]==')' && stk.top()=='('){
stk.pop();
n++;
}
else if(str[i]==']' && stk.top()=='['){
stk.pop();
n++;
}
else if(str[i]=='}' && stk.top()=='{'){
stk.pop();
n++;
}
else{ //栈不为空,左右不对应不可匹配的情况
i++;
continue;
}
}
}
i++;
}
printf("%d\n",n);
}
#include<cstdlib>
#include<stack>
#include<cstring>
using namespace std;
int main(){
char str[110];
stack<char> stk;
fgets(str, 110, stdin);
str[strcspn(str, "\n")] = 0;
int n = 0;
int i = 0;
while(str[i]!='\0'){
if(str[i]=='(' || str[i]=='[' || str[i]=='{'){ //遇见左括号进栈
stk.push(str[i]);
}
else if(str[i]==')' || str[i]==']' || str[i]=='}'){ //遇见右括号匹配
if(stk.empty()){ //栈为空无法匹配的情况
i++;
continue;
}
else{ //栈不为空,左右对应可匹配的情况
if(str[i]==')' && stk.top()=='('){
stk.pop();
n++;
}
else if(str[i]==']' && stk.top()=='['){
stk.pop();
n++;
}
else if(str[i]=='}' && stk.top()=='{'){
stk.pop();
n++;
}
else{ //栈不为空,左右不对应不可匹配的情况
i++;
continue;
}
}
}
i++;
}
printf("%d\n",n);
}