cf1374C. Move Brackets——蒟蒻题解

惯例,粘个生草翻译
cf1374C. Move Brackets——蒟蒻题解_第1张图片这题就是左右括号适配
我们为了判断当前是否已经适配
引入前缀和
( 表示1, ) 表示-1;
如果前缀和<0,说明这个位置是个多出来的 ) ,那么直接把他扔到最后面,总有一天他会找到另一半
这题也算个小贪心
但挺简单的

看代码

#include
using namespace std;
int main(){
	int t;
	cin>>t;
	while(t--){
		int n,ans=0,sum=0;
		cin>>n;
		char a[60];
		for(int i=1;i<=n;i++){
			cin>>a[i];
		}
		for(int i=1;i<=n;i++){
			if(a[i]=='(')
			ans++;
			else if(a[i]==')')
			ans--;
			if(ans<0){
				sum++;
				ans=0;
			}
		}
		cout<<sum<<endl;
	}
}

你可能感兴趣的:(题解,贪心算法,c++)