Ich habe dieses Problem irgendwo in einem Wettbewerb gefunden und konnte noch keine Lösung finden.Längste Kette, die arrangiert werden kann
Ich habe die positiven ganzen Zahlen. Ich muss die längste Teilmenge finden, die unter je zwei Nachbarelemente eines anderen teilt.
Was ich mache ist: Ich erstelle das Diagramm. Dann verbinde ich Knoten, in denen Zahlen sich gegenseitig teilen. Danach benutze ich DFS
(ein Knoten kann mit zwei Knoten verbunden sein).
Aber nicht alle Testfälle sind im System wahr. Muss ich das Array vor der Verwendung von DFS
sortieren? Vielleicht gibt es einen speziellen (dynamischen) Algorithmus?
Failing Testfälle:
N = 5
1 1 3 7 13
Mein Code gibt den Ausgang 4
. Aber wenn ich dieses Array wie folgt arrange
:
3 1 7 1 13
Der Ausgang ist 5 und es ist die wahre Antwort.
Ich verwendete auch rekursive Methode. Aber ich brauche etwas schneller.
'Aber nicht alle Testfälle sind wahr 'Bitte spezifizieren Sie den Testfall. –
Die Größe des Problems legt nahe, dass ein Algorithmus von O (2^n) akzeptabel ist, wahrscheinlich multipliziert mit n oder n^2. Wahrscheinlich dynamische Programmierung mit einer Bitset-Dimension und die andere Dimension ist das neueste hinzugefügte Element. – nhahtdh
@nhahtdh Kannst du mir bitte den Link geben, über den ich darüber lesen kann? –