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