求hack并解释括号匹配规则
  • 板块P1241 括号序列
  • 楼主canwen
  • 当前回复6
  • 已保存回复7
  • 发布时间2024/8/18 13:54
  • 上次更新2024/8/18 16:29:24
查看原帖
求hack并解释括号匹配规则
1284815
canwen楼主2024/8/18 13:54
#include<bits/stdc++.h>
using namespace std;

struct node{
	char a;
	int id;
};
int pd[101];//为 1 为匹配上了 
stack <node> st;
string s;
int main(){
	cin>>s;
	for(int i=0;i<s.size();i++){
		if(s[i]=='('||s[i]=='['){
			st.push((node){s[i],i});
		}
		else{
			if(s[i]==')'){
				if(!st.empty()&&st.top().a=='('){
					node tmp=st.top();
					pd[tmp.id]=pd[i]=1;
					st.pop();
				}else{
//					st.push((node){s[i],i});
					; 
				}
			}else{
				if(!st.empty()&&st.top().a=='['){
					node tmp=st.top();
					pd[tmp.id]=pd[i]=1;
					st.pop();
				}else{
//					st.push((node){s[i],i});
					;
				}
			}
		} 
	}
	for(int i=0;i<s.size();i++){
		if(!pd[i]){
			if(s[i]=='('||s[i]==')') cout<<"()";
			if(s[i]=='['||s[i]=='[') cout<<"[]";
		}else{
			cout<<s[i];
		}
	}
	return 0;
}

rt,只有 4444 分,不太理解这个匹配规则。

2024/8/18 13:54
加载中...