CF1214C

CF1214C

题意:

给你一个括号序列,问你时候能仅移动相邻的两个元素,使括号序列合法。

解法:

可以先考虑普通括号序列怎么做
这道题只交换相邻的两个元素,所以如果中间左括号和右括号的差值大于2时,括号就不合法。

CODE:

#include<bits/stdc++.h>
 
using namespace std; 
 
#define LL long long
#define N 200010
 
char s[N]; 
int n,l,r,cnt; 
 
int main() {
	scanf("%d",&n);
	for (int i = 0 ; i < n ; i++) {
		cin>>s; 
		if(s[i] == '(') l++; 
		else r++; 
	}
	for(int i = 0 ; i < n ; i++) {
		if(s[i] == '(') cnt++; 
		else cnt--; 
		if(cnt < -1) {
			puts("No");
           // system("pause"); 
			return 0; 
		}
	}
	if(l != r) puts("No"); 
	else puts("Yes");
    //system("pause"); 
	return 0; 
}
原文地址:https://www.cnblogs.com/Repulser/p/11469934.html