栈的简单应用
#include <stdlib.h>
#include <cstdio>
#include <iostream>
#include <queue>
#include <stack>
#include <string.h>
#include <math.h>
#include <algorithm>
#define mem(t, v) memset ((t) , v, sizeof(t))
#define INF 0x3f3f3f3f
using namespace std;
char in[1200];
stack<char> s;
int check(char a,char b){
if(a=='['&&b==']'||a=='('&&b==')'||a=='{'&&b=='}')
return 1;
return 0;
}
int main(){
while(!s.empty()){
s.pop();
}
cin.getline(in,1100);
int len=strlen(in);
int flag=0;
int cntl=0,cntr=0;
for(int i=0;i<len;i++){
if(in[i]=='('||in[i]=='['||in[i]=='{'){
cntl++;
s.push(in[i]);
}
if(in[i]==']'||in[i]==')'||in[i]=='}'){
cntr++;
char ch;
if(!s.empty()) //先判断是否为空再访问top
ch=s.top();
else ch='1';
if(check(ch,in[i])){
s.pop();
}
else {
flag=1;
}
}
}
if(cntr!=cntl)flag=1;
printf("%d %d\n",cntl,cntr);
printf(flag?"NO\n":"YES\n");
}