Bueno, la pregunta es realmente fácil cuando lo piensas.
Algoritmo
Ordene la secuencia y forme un equipo de estudiantes con (ni) estudiante.
Bueno, ¿preguntarás por qué?
- ¿Hay algún truco para que un programador de computadoras recuerde el código de un tipo de burbuja?
- ¿Hay alguna razón para almacenar cosas en una lista en lugar de un árbol?
- ¿Qué es el mapa de bits? ¿Dónde lo usamos?
- ¿Cuántos niveles habrá en un árbol completamente binario si tiene n número de nodos?
- ¿Cuáles son algunos de los diferentes casos que debería considerar usar matrices bidimensionales sobre matrices unidimensionales en Java?
Explicación
Dejame explicarte con un ejemplo.
Supongamos que hay 10 estudiantes con nivel de conocimiento
2 4 5 3 12 32 1 20 7 11
Después de ordenar la secuencia es
1 2 3 4 5 7 11 12 20 32
Haré un equipo de primer y décimo estudiante .
Puedo formar cualquier equipo, pero tengo que minimizar la diferencia entre el equipo de mayor conocimiento y el equipo de menor conocimiento.
Supongamos que elijo a cualquier otro alumno para formar un equipo con el décimo alumno, por ejemplo, segundo alumno con nivel de conocimiento 2 .. pero (2 + 32)> (1 + 32) que no parece bueno debido al hecho de que no hay otro no es mayor que 32 y tenemos que agregar un no tan pequeño como sea posible. Así que elijo 1 y 32 dándome 33.
El próximo equipo será 20,2. Ahora surge la pregunta de por qué no deberíamos elegir 12 u 11, lo que lo hace realmente cerca de 33 … Sí, por supuesto, tomará el conocimiento del equipo realmente cerca, pero eso no será lo mínimo. .
mínimo será un equipo elegido de los estudiantes restantes. Entonces no podemos elegir 11 o 12 con 20.
Del mismo modo, elegirá 3,12 y 4,11 y 5,7
el mínimo es 12 y el máximo es 33.
Entonces la diferencia es 21.
Espero que entiendas la lógica.