0Pricing
Coding Interview Prep · Lección

Genere todos los subconjuntos

Elija o descarte cada elemento

Genere todos los subconjuntos es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.

Por qué generar subconjuntos

Muchos problemas de concursos le piden probar cada subconjunto de un conjunto pequeño. Con recursión puede enumerarlos de forma clara y fiable. 🧩

Elija o descarte cada elemento

La idea central es la siguiente: para cada elemento toma una decisión binaria, incluirlo o dejarlo fuera. Cada conjunto completo de decisiones produce un subconjunto.

Cuántos subconjuntos existen

Un conjunto de n elementos tiene exactamente 2 elevado a n subconjuntos, porque cada elemento duplica la cantidad. Por eso, mantenga n pequeño, alrededor de 20 como máximo.

El plan recursivo

Recorra el arreglo con un índice. En cada índice, ramifique de dos formas: una vez tomando el elemento y otra vez omitiéndolo.

El caso base

Cuando el índice supera el último elemento, el camino actual es un subconjunto completo. Ese momento constituye el caso base para registrarlo.

La recursión de subconjuntos en código

Este recorrido recursivo registra un subconjunto al final y, después, explora las opciones de omitir y tomar en cada índice.

def gen(i, cur):
    if i == len(a):
        out.append(cur[:])
        return
    gen(i + 1, cur)
    gen(i + 1, cur + [a[i]])

Retroceda deshaciendo los cambios

Cuando añada un elemento, elimínelo después de la recursión para que la siguiente rama empiece limpia. Ese paso de deshacer es el núcleo del backtracking.

cur.append(a[i])
gen(i + 1, cur)
cur.pop()

La alternativa de la máscara de bits

También puede asignar cada entero de 0 a 2 elevado a n menos 1 a un subconjunto, donde cada bit indica si un elemento está incluido.

for mask in range(1 << n):
    sub = [a[i] for i in range(n) if mask >> i & 1]

Copie antes de guardar

Guarde siempre una copia de la lista actual, no la lista misma. De lo contrario, los cambios posteriores sobrescribirán todos los subconjuntos que haya guardado. ⚠️

Generación de combinaciones

Para obtener subconjuntos de un tamaño fijo k, detenga la rama cuando el contador de elementos elegidos llegue a k. Así, los subconjuntos se convierten en combinaciones.

Dónde aparecen los subconjuntos

La enumeración de subconjuntos resuelve problemas pequeños de mochila, selección de equipos y comprobaciones de factibilidad en los que debe probar cada selección posible.

Comprobación rápida

¿Cuántos subconjuntos tiene un conjunto de n elementos?

Resumen: ramifique en cada elemento

Ha aprendido a listar todos los subconjuntos eligiendo u omitiendo cada elemento y deshaciendo los cambios después de cada rama. Mantenga n pequeño, ya que la cantidad es 2 elevado a n. 🎯

Preguntas frecuentes

¿La lección «Genere todos los subconjuntos» es gratis?

Sí — el texto completo de «Genere todos los subconjuntos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Genere todos los subconjuntos»?

Elija o descarte cada elemento Practicas Coding Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Coding Interview Prep?

No se requiere experiencia previa. Coding Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Genere todos los subconjuntos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Coding Interview Prep?

Sí. Cada lección de Coding Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Piense recursivamente: caso base y recursión
  2. Genere todos los subconjuntos
  3. Permutaciones y la idea de N-reinas
  4. Pode para sobrevivir al límite de tiempo
← Volver a Coding Interview Prep