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;} 

posted @ 2020-11-20 16:11  ACM-Epoch  阅读(124)  评论(0编辑  收藏  举报