3-11 C: el número de soportes legales

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;
} 
Publicado 34 artículos originales · ganado elogios 6 · vistas 1342

Supongo que te gusta

Origin blog.csdn.net/qq_44669377/article/details/104802908
Recomendado
Clasificación