标签:== pause 元素 ret 序列 交换 include ++ std
给你一个括号序列,问你时候能仅移动相邻的两个元素,使括号序列合法。
可以先考虑普通括号序列怎么做
这道题只交换相邻的两个元素,所以如果中间左括号和右括号的差值大于2时,括号就不合法。
#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;
}
标签:== pause 元素 ret 序列 交换 include ++ std
原文地址:https://www.cnblogs.com/Repulser/p/11469934.html