60pts:
#include <bits/stdc++.h>
using namespace std;
int exrp() {
int cnt = 0;
char ch;
while (scanf("%c", &ch) != EOF) {
if (ch == 'a') cnt++;
if (ch == '|') cnt = max(cnt, exrp());
if (ch == '(') cnt = cnt + exrp();
if (ch == ')') return cnt;
}
return cnt;
}
int main() {
cout << exrp() << endl;
return 0;
}
100pts:
#include <bits/stdc++.h>
using namespace std;
int exrp() {
int cnt = 0;
char ch;
while (scanf("%c", &ch) != EOF) {
if (ch == 'a') cnt++;
if (ch == '|') return max(cnt, exrp());
if (ch == '(') cnt = cnt + exrp();
if (ch == ')') return cnt;
}
return cnt;
}
int main() {
cout << exrp() << endl;
return 0;
}
不太理解第8行的return是什么逻辑,为什么加上就对了?