Frage

Dieses Problem kommt aus den dynamischen Programmierung Kapitel in Der Algorithmus Deisgn Handbuch von Skiena.

  

Geben Sie einen Algorithmus, um zu bestimmen, ob Sie eine bestimmte Zeichenfolge durch Einfügen Ausschnitte aus einem Magazin erzeugen können. Sie sind eine Funktion gegeben, das den Charakter und seine Position auf der Rückseite der Seite für eine bestimmte Zeichenposition identifizieren.

Ich löste dies mit mit Rückzieher, aber da es in der dynamischen Programmierung Kapitel ist denke ich, muss es eine Wiederholung sein, die ich nicht heraus kann. Kann mir jemand einen Tipp geben?

War es hilfreich?

Lösung

Sie können es mit maximal zweiteiligen Anpassung lösen.

Jedes Zeichen L des gegebenen Zeichenfolge bildet den linken Satz. (Beachten Sie, wiederholen Sie die Zeichen, wenn die Zeichenfolge Zeichen hat wiederholt).

Jedes Paar von Zeichen (R1, R2) des Magazins bildet die richtigen.

L ist mit (r1, r2) iff L = R1 oder R2 = L.

Finden Sie eine maximale Übereinstimmung in dem resultierenden Graphen. Wenn alle linken Scheitel Teil der Anpassungs sind, haben Sie die Antwort. Wenn nicht, so ein String ist nicht möglich.

Siehe Maximum Bipartite Matchings für einen Algorithmus.

Nicht sicher, ob dies optimal ist, obwohl und sorry für nicht genau wie gefragt zu beantworten.

Andere Tipps

Wenn Sie eine rekursive Rückzieher Lösung haben, können Sie in der Lage sein anwenden memoization , die ein Weg ist, die dynamische Programmierung zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top