70分求助
查看原帖
70分求助
661913
liwenxi1145144444楼主2024/3/30 13:42
#include<bits/stdc++.h>
#define int long long
using namespace std;
string s;
int n;
struct node{
	int x,y;
};
bool vis[205];
vector<node> v;
vector<string> vs;
void dfs(int x,int sum){
	if(x==v.size()){
		if(sum>0){
			string ss;
			for(int i=1;i<=n;i++){
				if(!vis[i]){
					ss+=s[i];
				}
			}
			vs.push_back(ss);
		}
		return ;
	}
	vis[v[x].x]=vis[v[x].y]=1;
	dfs(x+1,sum+1);
	vis[v[x].x]=vis[v[x].y]=0;
	dfs(x+1,sum);
}
signed main(){
	cin>>s;
	n=s.size();
	s=" "+s;
	stack<int> st;
	for(int i=1;i<=n;i++){
		if(s[i]=='('){
			st.push(i);
		}else if(s[i]==')'){
			v.push_back({st.top(),i});
			st.pop();
		}
	}
	dfs(0,0);
	sort(vs.begin(),vs.end());
	for(int i=0;i<vs.size();i++){
		cout<<vs[i]<<"\n";
	}
	return 0;
}
2024/3/30 13:42
加载中...