|
发表于 2024-11-13 23:30:42
|
显示全部楼层
本楼为最佳答案
- #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 !
复制代码 |
|