Hice esta pregunta en StackOverflow , pero creo que este es un lugar más apropiado.
Este es un problema del curso de Introducción al algoritmo :
Tiene una matriz con enteros positivos (la matriz no necesita ser ordenada o los elementos únicos). Sugiera un algoritmo para encontrar la mayor suma de elementos que sea divisible por .n O ( n ) n
Ejemplo: . La respuesta es (con los elementos 6, 13, 4, 8, 25 )56 6 , 13 , 4 , 8 , 25
Es relativamente fácil encontrarlo en usando programación dinámica y almacenando la suma más grande con el resto .
Además, si restringimos la atención a una secuencia contigua de elementos, es fácil encontrar la secuencia óptima en el tiempo , almacenando sumas parciales módulo : sea , para cada resto recuerde el índice más grande tal que , y luego para cada considere donde es el índice correspondiente a .
Pero, ¿hay una solución de tiempo para el caso general? ¡Cualquier sugerencia será apreciada! Considero que esto tiene algo que ver con el álgebra lineal, pero no estoy seguro de qué es exactamente.
Alternativamente, ¿se puede hacer esto en tiempo ?