Programación General > C/C++

 Generar Subconjuntos de tamaño m de un conjutno

(1/3) > >>

protoculo:
Buenas,

partiendo de un método que tiene como entrada dos naturales: n y m.

Se deben generar todos los subconjuntos de tamaño m del conjunto con número de elementos n.

p .ejemplo.

si n = 4 y m =2
[1,2,3,4]

debería devolver [1,2] [1,3] [1,4] [2,3] [2,4] [3,4]

el conjunto inicial siempre se crea desde 1 a n.


Muchas gracias por la ayuda.


Yo había pensado en hacerlo con una lista simplemente enlazada. Lo que no averiguo es como recorrer el conjunto inicial (podria ser un vector) para dar todos los subconjuntos de tamaño m existentes.

Saludos,

Geo:
Lo puedes hacer con listas, con un vector simple, como desees.

Lo más sencillo: tomas el valor inicial y lo emparejas con todos los que le siguen, ahora tomas el segundo valor y lo emparejas con los subsecuentes, tomas el tercero y lo emparejas...

fachamix:
segui el consejo que te acaban de dar.
el programa es muy simple.

porque quieres utilizar listas???? necesitas tener en memoria (RAM) estos subconjuntos o simplemente los tienes que guardar en alguna parte, o simplemente los tienes que imprimir ???

si no necesitas tenerlos en memoria RAM, imprimelos simplemente, o guardalos en un archivo :D

protoculo:

--- Cita de: "Geo" ---Lo puedes hacer con listas, con un vector simple, como desees.

Lo más sencillo: tomas el valor inicial y lo emparejas con todos los que le siguen, ahora tomas el segundo valor y lo emparejas con los subsecuentes, tomas el tercero y lo emparejas...
--- Fin de la cita ---

Creo que no es tan sencillo como lo planteas...

no podemos emparejar el inicial con los siguientes, puesto que en el caso que expongo:

1,2,3,4

si se hacen de tres en tres, como se hace?

1,2,3 ... 1,2,4

no creo que sea tan sencillo... o estoy muy liado.

Si alguien puede postear la estructura solo para encontrar todas las combinaciones como pongo en el primer post, teniendo en cuenta que debe ser subconjuntos de m elementos de un conjunto de n.

no os preocupeis de donde se deben almacenar.

Saludos y gracias de nuevo.

Geo:

--- Cita de: "protoculo" ---
--- Cita de: "Geo" ---Lo puedes hacer con listas, con un vector simple, como desees.

Lo más sencillo: tomas el valor inicial y lo emparejas con todos los que le siguen, ahora tomas el segundo valor y lo emparejas con los subsecuentes, tomas el tercero y lo emparejas...
--- Fin de la cita ---

Creo que no es tan sencillo como lo planteas...

no podemos emparejar el inicial con los siguientes, puesto que en el caso que expongo:

1,2,3,4

si se hacen de tres en tres, como se hace?

1,2,3 ... 1,2,4

no creo que sea tan sencillo... o estoy muy liado.

--- Fin de la cita ---
¿De tres en tres? En tu enunciado no aparece esa posibilidad.


--- Cita de: "protoculo" ---Si alguien puede postear la estructura solo para encontrar todas las combinaciones como pongo en el primer post, teniendo en cuenta que debe ser subconjuntos de m elementos de un conjunto de n.

--- Fin de la cita ---
Podrías tomar papel, lápiz (y goma) y hacerlo.
4,3
123, 234

9,6
123456, 234567, 345678, 456789

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa