给定一个包含 ‘(', )', '?',的字符串,'?'可以变为'('或者')',求共有多少中不同变法可以变出匹配的括号来。
#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;
}