Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2005
kes kes is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 21
kes Va por buen camino
Calcular combinaciones

Hola a todos.

Tengo dos arrays (A y B) de [1..X] y necesitaria un algoritmo capaz de calcular y mostrar en un memo todas las combinaciones posibles entre ambos.

Todos los elementos de B tienen que estar en la combinación, pero no necesariamente todos los elementos de A. Por ejemplo: si A=[A1,A2,A3] y B=[B1,B2,B3,B4], la siguiente combinación seria correcta:

A1-B1
A1-B2
A2-B3
A2-B4

y la siguiente seria incorrecta:

A1-B1
A2-B2
A3-B2
A3-B2.

¿Alguien conoce algún algoritmo que pueda solucionarme el problema o donde puedo informarme del tema?

Saludos y muchas gracias.

Última edición por kes fecha: 01-07-2005 a las 10:18:54.
Responder Con Cita
  #2  
Antiguo 01-07-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues yo creo que con un simple bucle anidado se resolvería.

For i:=1 to High(xx)
For j:=1 to High(yy)

cuando no sean todos los elementos, habrá que ver la manera de presentar la lista para el usuario elija y eso es facil, luego el anidado no recorrería todos los elementos sino solamente los seleccionados.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 01-07-2005
kes kes is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 21
kes Va por buen camino
Gracias por la respuesta, pero esta no es la solución.

Este algoritmo solo genera una pequeña parte de las soluciones posibles, no todas.
Puede que me haya explicado mal... cuando digo "combinación" me refiero a que todos los elementos de B queden vinculados a un elemento de A. Es decir, en el ejemplo anterior una combinación tendria 4 elementos combinados, ya que el array B es de 4 elementos.
Siguiendo con el mismo ejemplo, si aplicamos este algoritmo las soluciones que genera son las siguientes:

A1-B1
A1-B2
A1-B3
A1-B4

A2-B1
A2-B2
A2-B3
A2-B4

A3-B1
A3-B2
A3-B3
A3-B4

Como puedes comprobar aqui faltan muchas combinaciones como podria ser, entre otras, la siguiente:

A1-B1
A2-B2
A2-B3
A3-B4

Saludos.
Responder Con Cita
  #4  
Antiguo 01-07-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Pues lo que marcos zorrilla ha dicho.

Las combinaciones correctas que has puesto es:
Para cada elemento de A, coges cada elemento de B

Useasé 2 bucles.

Si hubiera otra combinación correcta añadida a las anteriores, habrá que analizarla.... Es que yo estadistica la aprobé por los pelos y hace años... ¿hay más combinaciones correctas?

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 01-07-2005
kes kes is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 21
kes Va por buen camino
Hola Lepe.

Veo que no me explico. A lo que llamo combinación es a cada conjunto de cuatro elementos combinados. Por ejemplo:

A1-B1
A2-B2
A2-B3
A3-B4

Esto seria una sola combinación, no cuatro. Si utilizo dos bucles anidados me genera todas las relaciones entre los elementos de los dos arrays (3 combinaciones), pero estas relaciones después deben combinarse entre si para generar todos los posibles resultados de 4 elementos.

Supongo que debo utilizar funciones recursivas.

Espero haberme explicado mejor, aunque es bastante complicado el tema.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:45:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi