Nameless Parenthesis 题解

Nameless Parenthesis 题解

U215195 Nameless Parenthesis

题意分析

分别统计不匹配的左右括号数。(左括号 (,右括号 )

思路

一开始出现的右括号都是不匹配的(左侧没有左括号与之配对)。出现左括号后,我们可以统计左括号数量,遇到右括号时匹配一个(左括号数量减一),当左括号数量等于零时再出现的右括号是不匹配的,读入完毕后剩余的左括号也是不匹配的。

读入

可以用 getchar 读入一个字符,如果不是 '\' 就进行计算,否则输出并清零计数器。我们只需要句子中的左右括号,因此其他字符(可能包括奇奇怪怪的换行符之类的)可以忽略。

正解

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    scanf("%d",&n);
    while(n--){
        int ans1=0,ans2=0;//右括号、左括号计数器
        char ch=getchar();//读入一个字符
        while(ch!='\\'){//如果不是结束标志则循环
            if(ch==')'){//是右括号
                if(!ans2)ans1++;//没有可以匹配的左括号,右括号计数器加一
                else ans2--;//匹配一组
            }
            else if(ch=='(')ans2++;//左括号计数器加一
            ch=getchar();
        }
        printf("%d %d\n",ans2,ans1);//分别输出左右括号个数
    }
    return 0;
}
posted @ 2022-07-05 17:01  ofbwyx  阅读(41)  评论(0)    收藏  举报