título Descripción
Para darle un entero n, n tiene representantes de los soportes. Ahora se escribe un programa que puede generar una salida para todas las combinaciones posibles del número de activo y soportes.
entrada
Una pluralidad de conjuntos de datos de prueba a partir de los componentes de la muestra de prueba. Cada línea de entrada de prueba de un primer número entero positivo n (1 <= n <= 12)
exportación
Y el número de todos los posibles salida válida puede ser generado por una combinación de soportes
Copia entrada de la muestra
3
Copia ejemplo de salida
5
ideas:
paréntesis derecho debe coincidir con paréntesis izquierdo, siempre y cuando primero determinar la posición del paréntesis izquierdo paréntesis derecho se puede añadir directamente.
El número de paréntesis de cierre será sin duda menos igual al número de paréntesis de apertura.
núcleo:
str.size () == n * 2
dejó <n
derecho <izquierda
Código de CA:
#include<bits/stdc++.h>
using namespace std;
string str;
int n,ans;
void dfs(int left,int right,string &str){
if(str.size()==n*2){
ans++;
return;
}if(left<n){
str.push_back('(');
dfs(left+1,right,str);
str.erase(str.end()-1);
}if(right<left){
str.push_back(')');
dfs(left,right+1,str);
str.erase(str.end()-1);
}
}
int main(){
while(cin>>n){
ans=0;
dfs(0,0,str);
cout<<ans<<endl;
}
return 0;
}