ACM 括号匹配深度

Description

经常写程序的你可能有时会因为括号不匹配而收到编译器的报错,今天你的任务不仅仅是检查括号是否匹配,还要检查一下括号最大的嵌套层数,简称深度吧。括号匹配的规则参考编程语言中的括号合法性检查。

Input

第1行:一个字符串,包含字母、数字和英文括号’(‘、’)’,长度小于10000
多组测试数据,以文件结束EOF作为输入结束

Output

每组数据输出一行,第N组数据格式如下:
第N行:代表第N组数据的结果,如果括号是匹配的,输出最大的层数,如果括号不匹配,输出Error

Sample Input

(a)(b)(c)(d)(e)(f)(g)(h)
(())(((())))
(()))

Sample Output

1
4
Error

#include<iostream>
#include<stack>
using namespace std;
int main()
{
    char s[10010];
    int i,ans,flag;
    while(cin>>s){
        ans=0;
        flag=0;
        stack<char> st;
        for(i=0;s[i];i++){
            if(s[i]=='(')
                st.push(s[i]);
            if(st.size()>ans)
                ans=st.size();

            if(st.size()==0 && s[i]==')'){
                flag=1;
                break;
            }
            if(st.size() && s[i]==')')
                st.pop();
        }
        if(flag==1 || st.size()!=0)
            puts("Error");
        else
            printf("%d\n",ans);
    }
    return 0;
}
展开阅读全文

没有更多推荐了,返回首页