Los remeros de Punt
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- listas
- comparaciones
Enunciado
La reina Hatshepsut manda barcos al país de Punt por incienso y marfil, y en cada banco reman dos hombres juntos. Nehesy, el jefe de la expedición, sabe que una pareja que se entiende rema mejor, y anotó la afinidad de cada par de remeros. Quiere acomodarlos a todos en parejas para que la afinidad total sea la más alta.
Escribe una función que reciba afinidad, una lista de listas de enteros de 0 en adelante: afinidad[i][j] es la afinidad entre los remeros i y j, igual a afinidad[j][i], y afinidad[i][i] es 0. El número de remeros es par, a lo más 10, y puede ser 0. Cada remero va en exactamente una pareja. Regresa un entero: la suma más alta que pueden dar las afinidades de las parejas.
Con [[0, 5, 1, 2], [5, 0, 3, 1], [1, 3, 0, 4], [2, 1, 4, 0]]: juntar al 0 con el 1 y al 2 con el 3 da 5 + 4 = 9; las otras dos maneras dan 1 + 1 = 2 y 2 + 3 = 5, así que regresa 9. Con dos remeros, [[0, 7], [7, 0]], solo hay una pareja posible: 7. Sin remeros, 0.
Ejemplos
El ejemplo
[[0, 5, 1, 2], [5, 0, 3, 1], [1, 3, 0, 4], [2, 1, 4, 0]] → 9
Dos remeros
[[0, 7], [7, 0]] → 7
La pareja que mejor se entiende no conviene
[[0, 10, 9, 0], [10, 0, 0, 9], [9, 0, 0, 0], [0, 9, 0, 0]] → 18
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def mejor_banco(afinidad):
passJavaScript
function mejorBanco(afinidad) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.