Ver Mensaje Individual
  #6  
Antiguo 25-02-2009
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
Hacer una matriz de tantas filas y columnas como equipos más una fila

A partir de ahí, tendrás que iterar siempre de izquierda a derecha y de arriba abajo o en columnas, pero siempre en el mismo orden. De no hacerlo así, te saldrán partidos repetidos.
Además, tienes que llevar el control de las columnas y filas que se eliminan en cada iteración.

Ejemplo

Son seis los equipos. Creamos una matriz de filas = nº de equipos más dos y columnas nº de equipos más dos LA diagonal central se anula, ya que no pueden jugar contra sí mismos.
Código:
Anulacion							
	x	1	2	3	4	5	6
	1	x					
	2		x				
	3			x			
	4				x		
	5					x	
	6						x
Las iteraciones terminan cuando has terminado con todos los partidos del equipo 1. Esto indicará la primera vuelta.
primera jornada:
Iteración 1
Primera columna: El equipo 1 se enfrentará consigo mismo. Como la casilla está ocupada, se sigue con la siguiente columna.
Siguiente columna: Como está vacía, se pone un “1”, primera jornada, partido 1 vs 2. En la primera fila y la primera columna, se marcan las filas y columnas 1 y 2 ya que están ya asignados esos equipos.
Se cuenta 1 en el contador de partidos, que máximo será 3 porque son seis equipos.
Iteración 2: Se salta la fila 2 ya que este equipo está ya ocupado en esta jornada.
Iteración 3: se saltan las columnas 1 y 2 porque los equipos están ocupados. La siguiente columna se salta porque no puede jugar contra sí mismo ¿ quién ganaría ¿
Siguiente columna: como está libre, se pone un “1”, segundo partido de la jornada 1.
Se marcan las filas y columnas de los equipos 3 y 4, ya que ya están asignados para esta jornada.
Se cuenta uno al contador de partidos.
Iteración 4: se saltan las filas 1,2,3 y 4 por estar ya asignados los equipos.
Con el equipo 5 se saltan las columnas de los equipos 1,2 ,3 y cuatro. También la del 5 por ser el mismo equipo. Ponemos en la casilla de los equipos 5 y 6 que está libre otro “1” de la primera jornada.
Se suma uno al contador, como ya hemos llegado a tres, empezamos con la segunda jornada.
El resultado es esta tabla
Código:
Anulacion	si	si	si	Si		
	x	1	2	3	4	5	6
Si	1	x	1				
Si	2		x				
Si	3			x	1		
Si	4				X		
	5					x	1
	6						X

Se desmarcan todos los equipos como ocupados.
El resultado es éste
Código:
Anulacion							
	x	1	2	3	4	5	6
	1	X	1				
	2		x				
	3			x	1		
	4				X		
	5					x	1
	6						X
Segunda jornada.
Empezamos con la fila del equipo 1. Saltamos las casillas ocupadas. Como la columna del equipo 3 está libre, ponemos un “2” de segunda jornada.
Ponemos las filas y columnas de los equipos 1 y 3 ocupadas.
Aumentamos el contador de partidos.
Pasamos a la fila 2, que no está ocupada.
Saltamos las columnas de los equipos 1, 2 y 3 por lo ya descrito anteriormente. Plantamos un “2” en la casilla de los equipos 2 y 4.
Marcamos las filas y columnas de los equipos 2 y 4 como ocupadas
Aumentamos el contador de partidos, ya nos queda menos.
Pasamos a la fila 5 que es la siguiente libre. Recorremos las filas ocupadas hasta la columna 6. Como ya está rellena por el valor “1”, pasamos de largo. Como no hay más columnas, pasamos a la siguiente fila.
Pasamos a la fila 6, y en la columna del equipo 5 ponemos el valor “2”.
Como ya tenemos los tres partidos por jornada, pasaremos a la siguiente jornada.
Se desmarcan todas las filas y columnas como ocupadas.
Aplicamos el algoritmo hasta el final (nº de equipos - 1), y el resultado deberá salir algo parecido a esto
Código:
Anulacion							
	x	1	2	3	4	5	6
	1	X	1	2	3	4	5
	2		x	5	2	3	4
	3			x	1		
	4			4	X	5	
	5					X	1
	6			3		2	X
Y ya está. Si quieres puedes utilizar un valor determinado para rellenar las casillas que están ocupadas temporalmente y te ahorras manejar una fila y una columna.

Espero que te sirva de ayuda. Lo único que necesitas es saber cómo se redimensiona una matriz para asignar las filas y las columnas.
Otra cosa que puedes hacer es hacer un stringgrid para ver en pantalla el resultado.
Y por supuesto, gastar lápiz y papel hasta que ajustes perfectamente el algoritmo.

Ya nos contarás.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita