Digamos que tiene kmatrices de tamaño N, cada una con valores únicos de 1a N.
¿Cómo encontrarías los dos números que están en promedio más alejados el uno del otro?
Por ejemplo, dados los arreglos:
[1,4,2,3]
[4,2,3,1]
[2,3,4,1]
Entonces la respuesta sería el ítem 1y 2, dado que están a una distancia de 2 en las dos primeras matrices, y de 3 números en la última.
Soy consciente de una solución O (kN ^ 2) (midiendo la distancia entre cada par de números para cada una de las kmatrices), pero ¿hay una solución mejor?
Quiero implementar dicho algoritmo en C ++, pero cualquier descripción de una solución sería útil.
fuente

Tengo una sugerencia para el mejor caso . Puedes seguir un enfoque heurístico.
Por ejemplo, sabes que si
N=4,N-1=3será la distancia máxima y1será la mínima. La distancia media es10/6=1,66667(sumas de distancias entre pares dentro de una matriz / número de pares dentro de una matriz).Entonces, sabe que si dos números están en los bordes de las
k/2matrices (la mayoría de las veces), ya está en la parte superior promedio (> =2de la distancia), incluso si están1separados por la distancia en las otrask/2matrices. Esa podría ser una solución para el mejor caso enO(2k)=O(k).fuente