'?'变化左右括号,使得字符串括号匹配

给定一个包含 ‘(', )', '?',的字符串,'?'可以变为'('或者')',求共有多少中不同变法可以变出匹配的括号来。

#include<iostream>
using namespace std;
void getcount(string &s,int pos,int left,int right,int&num){
	if(left<right){
		return;
	}
	if(pos==s.size()){
		if(left==right){
			num +=1;
		}
		return;
	}
	if(s[pos]=='('){
		getcount(s,pos+1,left+1,right,num);
	}
	if(s[pos]==')'){
		getcount(s,pos+1,left,right+1,num);
	}
	if(s[pos]=='?'){
		getcount(s,pos+1,left+1,right,num);
		getcount(s,pos+1,left,right+1,num);
	}
	
}

int main(){
	string s;
	cin>>s;
	int num=0;
	getcount(s,0,0,0,num);
	cout<<num;
}
原文地址:https://www.cnblogs.com/qiuhaifeng/p/11588007.html