Subconjunto de colecciones (JAVA)

Descripción del problema:

Dado un conjunto unidimensional, encuentre un subconjunto del conjunto.

Subconjunto: El subconjunto es un concepto matemático: si algún elemento del conjunto A es un elemento del conjunto B, entonces el conjunto A se denomina subconjunto del conjunto B. Lenguaje simbólico: si ∀a∈A, todos tienen a∈B, entonces A⊆B.

Análisis de ideas: el seguimiento de su esencia, de hecho, el subconjunto es agregar o no agregar nuevos elementos. Por ejemplo, si solo hay un elemento, consideramos agregar o no agregar este elemento sobre la base del conjunto vacío, y luego podemos formar dos conjuntos (uno es el conjunto vacío y el otro es este elemento), que es la salida recursiva. Por lo tanto, para resolver un subconjunto de un conjunto, primero debemos resolver recursivamente el conjunto que se encuentra sobre él y luego atravesar cada conjunto pequeño del conjunto anterior, considerando si se agrega o no, se puede resolver.

El código es el siguiente:

import java.util.HashSet;
import java.util.Set;
public class Zj {
    //求解一个集合的所有子集(归根是上一级元素对新元素的加与不加)
    static Set<Set<Integer>> zj(Integer[]a,int n)
    {
        Set<Set<Integer>> nej=new HashSet<>();//返回的集合声明
        if(n==0)//递归出口
        { Set<Integer> temp1 =new HashSet<>();
          temp1.add(a[n]);
          nej.add(temp1);//加上第一个元素
          Set<Integer> temp =new HashSet<>();
          nej.add(temp);//加上一个空集
          return nej;//返回集合
        }
        Set<Set<Integer>> old=zj(a,n-1);//递归求解出上一层集合
        for (Set<Integer> j:old)//对上一层集合的每一个元素进行加与不加新元素
        {
            nej.add(j);//不加新元素,原始输出
            Set<Integer> clone=(Set<Integer>)((HashSet<Integer>)j).clone();
            clone.add(a[n]);//利用集合克隆体进行加上新元素
            nej.add(clone);
        }
        return nej;
    }
    public static void main(String[] args) {
        Integer []a={1,2,3};
        Set<Set<Integer>> b=zj(a,a.length-1);
        System.out.println(b);
    }
}

Presta atención a la clonación de la colección.

Los resultados son los siguientes:
Inserte la descripción de la imagen aquí

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

Supongo que te gusta

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