60分求助!

P1739 表达式括号匹配

``` #include<bits/stdc++.h> using namespace std; string s; bool a[256],f = 0; int main() { memset(a, 1, sizeof(a)); cin >> s; for(int i = 0;s[i] != '@';i++) { if(s[i] == '(') { f = 0; for(int j = i + 1;s[j] != '@';j++) { if(s[j] == ')' && a[j]) { a[j] = 0; f = 1; break; } } if(f == 0) { cout << "NO" << endl; return 0; } } if(s[i] == ')' && a[j] == 1) { cout << "NO" << endl; return 0; } } if(f) printf("YES"); else printf("NO"); return 0; } ``` 首先是第十行的判断条件不对,如果找到一个右括号,一旦被用过,就不会接下来去找了; 第二点是如果找到一个新的右括号,就说明多出来一个,直接否决;
by A3_141592a @ 2023-09-04 21:33:38


@[xibaby](/user/995569)
by A3_141592a @ 2023-09-04 21:34:07


@[A3_141592a](/user/751582)
by A3_141592a @ 2023-09-17 10:55:41


|