Character(栈的应用)

来源:互联网 发布:淘宝上摩托车能买吗 编辑:程序博客网 时间:2024/06/08 10:12

Description

给定括号长度N,给出一串括号(只包含小括号),计算出最少的交换(两两交换)次数,使整个括号序列匹配。
我们认为一个括号匹配,即对任意一个')',在其左侧都有一个'('与它匹配,且他们形成一一映射关系。

Format

Input

第一行:整数N,表示括号序列长度
第二行:一个字符串,表示括号

Output

一个整数,表示最少的交换次数

Sample

Input1

6(()))(
Copy

Output1

1
Copy

Input2

6)))(((
Copy

Output2

2

#include <bits/stdc++.h>using namespace std;const int maxn=5e6+5;char a[maxn];stack<char>s;int main(){int n;while(cin>>n){while(!s.empty())s.pop();cin>>a;int cnt=0;for(int i=0;i<n;i++){if(a[i]=='(')s.push('(');else{if(s.empty()||s.top()==')')s.push(')');else{s.pop();cnt++;}}}cout<<(n/2-cnt+1)/2<<endl;}return 0;}



原创粉丝点击