求救,才12分
查看原帖
求救,才12分
1074812
Jared0503楼主2024/1/23 19:58

代码献上

#include<bits/stdc++.h>
using namespace std;
struct node{
	char s[101];
	int num[101],top;
}op[2];
int i,j;
string bin="",ans="";
int main()
{
	char a;
	while(cin>>a)
	{
		bin=bin+' '+a+' ';
		if(a=='(') op[0].s[++op[0].top]=a,op[0].num[op[0].top]=++i;
		else if(a=='[') op[1].s[++op[1].top]=a,op[1].num[op[1].top]=++i;
		else if(a==')'&&op[0].s[op[0].top]=='(') op[0].top--;
		else if(a==')') op[0].s[++op[0].top]=a,op[0].num[op[0].top]=++i;
		else if(a==']'&&op[1].s[op[1].top]=='[') op[1].top--;
		else if(a==']') op[1].s[++op[1].top]=a,op[1].num[op[1].top]=++i;
	}
	//(num.top()+1)*2-1 
	//0123
	//([()
	//
	//012345678901
	//  (  [  (  ) 
	while(op[0].top)
	{
//		cout<<op[0].num[op[0].top]<<' ';
		if(op[0].s[op[0].top]=='(') bin[op[0].num[op[0].top]*3]=')';
		else bin[op[0].num[op[0].top]*3]='(';
		op[0].top--;
	}
	while(op[1].top)
	{
//		cout<<op[1].num[op[1].top]<<' ';
		if(op[1].s[op[1].top]=='[') bin[op[1].num[op[1].top]*3]=']';
		else bin[op[1].num[op[1].top]*3]='[';
		op[1].top--;
	}
	for(i=0;i<bin.size();i++) if(bin[i]!=' ') ans+=bin[i];
	cout<<ans;
}
2024/1/23 19:58
加载中...