问你,拿出若干个左括号或者右括号后,匹配的最大长度。。 我直接拿2704改的,数组开小了,悲剧了。。。今天改后AC了。。。 #include <stdio.h> #include <stdlib.h> #include <string.h> int n; int sta[1000005]; char str[1000005]; int stack(int x) { sta[n++] = x; } int pop() { int x; x = sta[n]; n--; return x; } int match(int m,int n) { if(str[ sta[m] ] =='(' && str[ n ] == ')') return 1; return 0; } int main(void) { int count = 0,i,len; while(scanf("%s",str) != EOF) { n = 0; memset(sta,'/0',sizeof(sta)); count = 0; len = strlen(str); stack(0); for(i=1;i<len;i++) { stack(i); if(n<2) continue; if( match(n-2,i) ) { pop(); pop(); count+=2; } } printf("%d/n",count); } return 0; }