#include <stdio.h>
char d[] = {'{' , '}' ,'[' , ']' , '(' , ')'} ;
bool check(char s[])
{
char e[256] ;
bool r ;
int i , j , k ;
for(i = k = 0 , r = true ; s[i] && r ; i ++) {
for(j = 0 ; j < 6 ; j ++) if(s[i] == d[j]) break ;
if(j < 6) {
if(! (j % 2)) {
e[k ++] = j + 1 ;
} else {
if(k && s[i] == d[e[k - 1]]) {
e[k - 1] = 0 ;
k -- ;
} else {
r = false ;
}
}
}
}
if(r) r = (k == 0) ? true : false ;
return r ;
}
int main(void)
{
char s[256] ;
int i , n ;
for(n = 0 ; (s[n] = getchar()) != '\n' ;) {
for(i = 0 ; i < 6 ; i ++) if(s[n] == d[i]) break ;
if(i < 6) n ++ ;
}
s[n] = 0 ;
if(check(s)) printf("True !\n") ;
else printf("False !\n") ;
}
编译、运行实况:D:\[exercise]\C>g++ -static -o x x.cpp
D:\[exercise]\C>x
{{[[[()()]]]}}
True !
|