题解:P7269 [BalticOI 2005] Magic Parenthesis

· · 题解

P7269 Magic Parenthesis 题解

题目大意

给定一个括号串,只含 ()],其中 ] 可替换为若干个 )

判断此括号串是否合法,若合法,分别求出每个 ] 应替换为几个 )

注意:若有解,答案不一定唯一

思路

Tips

AC code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,m;
string x,s;
int main()
{
    cin>>n>>m;
    while(cin>>x) s+=x; // 读入
    int cnt = 0; // cnt统计还有多少个未配对的 '('
    for(int i = 0;i<n;i++){
        if(s[i] == '(') cnt++;
        else{
            cnt--;
            if(cnt<0)
                return cout<<0,0;
        }
    }
    cout<<"1\n";
    for(int i = 1;i<m;i++)
        cout<<"1\n";
    cout<<1+cnt;
    return 0;
}