J'ai posé cette question sur StackOverflow , mais je pense que c'est un endroit plus approprié.
C'est un problème du cours d' introduction aux algorithmes :
Vous avez un tableau avec entiers positifs (le tableau n'a pas besoin d'être trié ou les éléments sont uniques). Suggérez un algorithme pour trouver la plus grande somme d'éléments divisible par .
Exemple: . La réponse est (avec les éléments 6 , 13 , 4 , 8 , 25 )
Il est relativement facile de trouver dans en utilisant la programmation dynamique et le stockage la plus grande somme avec le reste .
De plus, si nous limitons l'attention à une séquence d'éléments contigus, il est facile de trouver la séquence optimale de ce type en temps , en stockant les sommes partielles modulo : let , pour chaque reste rappelez-vous le plus grand indice tel que , puis pour chaque vous considérez oùest l'indice correspondant à .
Mais existe-t-il une solution en temps pour le cas général? Toute suggestion sera appréciée! Je considère que cela a quelque chose à voir avec l'algèbre linéaire, mais je ne sais pas exactement quoi.
Sinon, cela peut-il être fait en temps ?