Paréntesis legales (java)

Descripción del problema:

Ingrese el logaritmo de paréntesis y genere todas las combinaciones legales, como la entrada 1, salida "()", entrada 3, salida "() () (), (() ()), () (()), (() ) (), ((())) ".

Análisis de pensamiento:

Frente a este tipo de problema, de hecho no fue fácil descubrir cómo usar la recursión al principio. Vamos a enumerarlos uno por uno y descubrir sus leyes correspondientes. Se puede encontrar que al agregar una unidad se agregará una capa de paréntesis a la izquierda, derecha y en general de cada elemento en el conjunto anterior. Luego habrá una gran cantidad de elementos duplicados, por lo tanto, usamos la colección Set para la deduplicación.

El código específico es el siguiente:

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Hfkh {
    //合法括号求解(递归)
    static Set<String> hfkh(int a)
    {
        Set<String> set=new HashSet<>();//使用set集合可以去除重复字段
        if (a==1)//递归出口
        {
           set.add("()");
           return set;
        }
        Set<String> set_1=hfkh(a-1);//递归找到上一层括号集合
        for (String b:set_1)//利用循环对其左中右进行括号的相应的插入
        {
          set.add("()"+b);
          set.add(b+"()");
          set.add("("+b+")");
        }
       return set;
    }
    public static void main(String[] args) {
        Scanner a=new Scanner(System.in);//数据输入
        int b=a.nextInt();
        Set<String> set=hfkh(b);
        System.out.println(set);
    }
}

Los resultados son los siguientes:

Inserte la descripción de la imagen aquí

Publicado 14 artículos originales · elogiado 0 · visitas 237

Supongo que te gusta

Origin blog.csdn.net/lianggege88/article/details/105494465
Recomendado
Clasificación