比赛 ?板子大赛 评测结果 AWWWE
题目名称 括号匹配 最终得分 20
用户昵称 2_16鸡扒拌面 运行时间 0.393 s
代码语言 C++ 内存使用 6.25 MiB
提交时间 2026-01-17 10:13:15
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

string s;
stack<int> st;
int ans1[1000005]={0};

int main() {
	freopen("kakko.in","r",stdin);
	freopen("kakko.out","w",stdout);
	int n;
	cin>>n;
	for(int l=1; l<=n; ++l) 
    {
		cin>>s;
		int ans=0;
		bool b=1;
		int depth=0;
		for(int i=0; i<s.size(); i++) 
        {
			if(s[i]=='(') 
			{
			    st.push(1);
			    depth++;
            }
				
			if(s[i]=='[') 
			{
			    st.push(2);
			    depth++;
            }
			if(s[i]=='<') 
			{
			    st.push(3);
			    depth++;
            }
			if(s[i]=='{') 
			{
			    st.push(4);
			    depth++;
            }
			if(s[i]==')') 
            {
				if(st.empty()) 
                {
					b=0;
					break;
				} 
                else 
                {
					if(st.top()==1) 
					{
                        depth--;
                        st.pop();
                    } 
                    else 
                    {
						b=0;
						break;
					}
				}
			}
			if(s[i]==']') 
            {
				if(st.empty()) 
                {
					b=0;
					break;
				} 
                else 
                {
					if(st.top()==2) 
					{
                        depth--;
                        st.pop();
                    } 
                    else 
                    {
						b=0;
						break;
					}
				}
			}
			if(s[i]=='>') 
            {
				if(st.empty()) 
                {
					b=0;
					break;
				} 
                else 
                {
					if(st.top()==3)
                    {
                        depth--;
                        st.pop();
                    } 
                    else 
                    {
						b=0;
						break;
					}
				}
			}
			if(s[i]=='}') 
            {
				if(st.empty()) 
                {
					b=0;
					break;
				} 
                else 
                {
					if(st.top()==4) 
					{
                        depth--;
                        st.pop();
                    } 
                    else 
                    {
						b=0;
						break;
					}
				}
			}
			if(depth>ans) ans=depth;
			ans1[depth]++;
		}
        if(st.empty()) 
        {
            cout<<"TRUE"<<" ";
            cout<<ans<<" "<<ans1[ans]<<endl;
        }
		else 
			cout<<"FALSE"<<endl;
    }
	return 0;
}