P1241 68pts求调
  • 板块灌水区
  • 楼主Harrison_000
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/27 17:13
  • 上次更新2024/8/27 20:03:21
查看原帖
P1241 68pts求调
893382
Harrison_000楼主2024/8/27 17:13
#include<bits/stdc++.h>
using namespace std;
struct node{
	int d;
	char c;
};
char c[1100];
bool t[1100]; 
stack<node> s;
int main(){
	cin >>c;
	int len=strlen(c);
	for(int i=0;i<len;i++){
		if(s.empty()){        //当栈为空时无法进行以下的操作 
			s.push({i,c[i]}); //将(i,c[i])入栈
			continue; 
		}
		node tmp=s.top(); //读取栈顶元素
		s.push({i,c[i]}); //将(i,c[i])入栈
		if(s.top().c==')' && tmp.c=='('){
			s.pop();
			s.pop();
			t[i]=true;
			t[tmp.d]=true;
		}
		else if(s.top().c==']' && tmp.c=='['){ 
			s.pop();
			s.pop();
			t[i]=true;
			t[tmp.d]=true;
		}
	}
	for(int i=0;i<len;i++){
		if(t[i]==true){
			cout <<c[i];
		}
		else{
			if(c[i]=='(' || c[i]==')'){
				cout <<"()";
			}
			else if(c[i]=='[' || c[i]==']'){
				cout <<"[]";
			}
		}
	}
	return 0;
}
2024/8/27 17:13
加载中...