C. Two Brackets
链接:https://codeforces.com/contest/1452/problem/C
题意:变相的括号匹配,只是不在乎位序,只要前后呼应就可以,问可以删除多少对括号
思路:直接用两个变量来表示(,[的数量,一旦遇见)]就减少,每删除一个就将答案加一。
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int t; cin >> t;
while(t--) {
string s; cin >> s;
int a = 0, b = 0, ans = 0;
for(int i = 0; i < s.size(); i++) {
if(s[i] == '(') a++;
else if(s[i] == '[') b++;
else if(s[i] == ')' && a > 0) {
a--; ans++;
}
else if(s[i] == ']' && b > 0) {
b--; ans++;
}
}
cout << ans << endl;
}
return 0;
}
#include <bits/stdc++.h>using namespace std;
int main() {int t;cin >> t;while(t--) {string s;cin >> s;int a = 0, b = 0, ans = 0;for(int i = 0; i < s.size(); i++) {if(s[i] == '(') a++;else if(s[i] == '[') b++;else if(s[i] == ')' && a > 0) {a--; ans++;}else if(s[i] == ']' && b > 0) {b--; ans++;}}cout << ans << endl;}return 0;}

浙公网安备 33010602011771号