Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/09/2010, 12:24
RULZY
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 1
Ayuda con algoritmo "todos contra todos"

Resulta que tengo que implementar el algoritmo "todos contra todos" en java, o sea para una liga... en este caso es de futbol.
Luego de estar horas quemandome el coco buscando la forma de poder enfrentarlos todos contra todos probando algoritmos en hoja y papel sin exito, al final como manotazo de ahogado se me da por buscar en google y me ecuentro con este algoritmo que si sirve: http://es.wikipedia.org/wiki/Sistema_de_todos_contra_todos

El tema del algoritmo es asi:

Equipos Enfrentamientos

1 2 3 4 5 6 ---> 1vs6 --- 2vs5 -- 3vs4
1 6 2 3 4 5 ---> 1vs5 --- 6vs4 -- 2vs3
1 5 6 2 3 4 ---> 1vs4 -- 5vs3 -- 6vs2
1 4 5 6 2 5 ---> 1vs3 -- 4vs2 -- 5vs6
1 3 4 5 6 2 ---> 1vs2 -- 3vs6 -- 4vs5

La cosa es asi: para determinar el calendario del torneo, se realiza un simple algoritmo de selección... a cada uno de los competidores (en este caso 1 2 3 4 5 6 a la izquieda) se le asigna un número y se van rotando los números, dejando uno fijo (en este caso el 1)

Se procede a "enfrentar" el primero contra el ultimo, el segundo contra el penultimo, el tercero contra el antepenultimo y todo asi... sumando uno del lado izquierdo y restando uno del lado derecho, de tal manera suponiendo que tengamos 6 equipos 1 2 3 4 5 6 los enfrentamientos serian: 1vs6 --- 2vs5 -- 3vs4, etc etc luego para el siguiente mentenemos el 1 fijo y vamos cambiando la segunda posicion.

Bueno el tema es que voy a empezar con la funcion de generarPartido primero y tengo dudas...

public static void generarPartidos() {

int cantCuadros = 5;
int cantMaxEncuentros=3;

String[] arrEncuentros = new String [cantMaxEncuentros];
String [] arrCuadros = new String[5];
arrCuadros[0] = "River";
arrCuadros[1]="Boca";
arrCuadros[2]="Newells";
arrCuadros[3]="Indepentiente";
arrCuadros[4]="Estudiantes";
arrCuadros[5]="Velez";

for( int i=0; i<cantMaxEncuentros; i ++ ){


}

}


Lo que intento hacer es guardar dentro de arrEncuentros en cada posicion los enfrentamientos.. en este caso serian 3 por cada llamada a la funcion "generarPartidos" no tengo mucha idea de como asignar. La idea es que el arrCuadros se pase como parametro a la funcion y se llame varias veces mandando el vector alterado para generar el total de 15 partidos que son, pero lo estoy haciendo todo en esta solo para probar de a 3 partidos por lo menos.
Por ejemplo deberia quedarme asi en cada posicion del vector al ir imprimiendo el contenido de sus posiciones:

River– Velez
Boca – Estudiantes
Newells - Independiente

Quiero solo empezar con esta pequeña partecita y luego ire de a poco con el resto que me piden!
Alguna idea? ayudita? mano .. se agradece!