```
#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