Saltar al contenido

Los remeros de Punt

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):
    pass

JavaScript

function mejorBanco(afinidad) {
}
Resolver este reto

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.

Más retos de O(2ⁿ)

Ver todos los retos →