55分求助

P1241 括号序列

同55 ``` #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<cctype> #include<stack> using namespace std; int n; char s[110]; stack<int> st; bool p[110]; int main() { cin>>(s+1); // cout<<s+1; n=strlen(s+1); memset(p,1,sizeof(p)); for(int i=1;i<=n;i++) { if(s[i]=='(') st.push(i); if(s[i]==')') p[st.top()]=0,p[i]=0,st.pop(); } // for(int i=1;i<=n;i++) cout<<s[i]<<" "; for(int i=1;i<=n;i++) { if(p[i]==1) { if(s[i]=='(') printf("()"); if(s[i]=='['||s[i]==']') printf("[]"); } else { if(s[i]=='(') printf("("); if(s[i]==')') printf(")"); } } return 0; } ```
by 诸神 @ 2018-11-06 21:52:26


同55: ``` #include<bits/stdc++.h> using namespace std; char a[210]; int q[110]; int main(){ cin>>a; int tot=0,l=strlen(a); for(register int i=0;i<l;i++){ q[tot++]=i; if(a[i]==')'&&a[q[tot-2]]=='('||a[i]==']'&&a[q[tot-2]]=='[')tot-=2,q[tot]=q[tot+1]=0; } for(register int i=0;i<tot;i++){ switch(a[q[i]+i]){ case '(':{ for(register int j=l;j>q[i]+1+i;j--)a[j]=a[j-1]; a[q[i]+1+i]=')'; l++; break; } case ')':{ for(register int j=l;j>q[i];j--)a[j]=a[j-1]; a[q[i]+i]='('; l++; break; } case '[':{ for(register int j=l;j>q[i]+1;j--)a[j]=a[j-1]; a[q[i]+1+i]=']'; l++; break; } case ']':{ for(register int j=l;j>q[i];j--)a[j]=a[j-1]; a[q[i]+i]='['; l++; break; } } } cout<<a; return 0; } ```
by __OccDreamer__ @ 2019-08-15 22:21:10


|