Ich habe diese Frage auf StackOverflow gestellt , aber ich denke, hier ist ein geeigneterer Ort.
Dies ist ein Problem aus dem Kurs Einführung in Algorithmen :
Sie haben ein Array mit positiven ganzen Zahlen (das Array muss nicht sortiert oder die Elemente eindeutig sein). Schlagen Sie einen -Algorithmus vor, um die größte durch teilbare Summe von Elementen zu finden .
Beispiel: . Die Antwort ist (mit Elementen )
Mit dynamischer Programmierung und Speichern der größten Summe mit dem Rest 0 , 1 , 2 , ist es relativ einfach, sie in zu finden . . . , N - 1 .
Wenn wir die Aufmerksamkeit auf eine zusammenhängende Folge von Elementen beschränken, ist es auch einfach, die optimale Folge in Zeit zu finden, indem Teilsummen modulo gespeichert werden : sei , für jeden Rest merken Sie sich den größten Index so dass , und dann für jedes Sie S [j] -S [i] wobei ji S [ j ] - S [ i ] jist der Index, der .
Aber gibt es eine -Zeitlösung für den allgemeinen Fall? Vorschläge werden geschätzt! Ich denke, dies hat etwas mit linearer Algebra zu tun, aber ich bin mir nicht sicher, was genau.
Alternativ kann dies in Zeit erfolgen?