Frage

Ich kodiere LCS (längste gemeinsame Ansprüche) im PHP-Programm mit rekursivem Ansatz. Ich habe den folgenden Code:

generasacodicetagpre.

Um die LCS zu drucken, rufe ich die folgende Funktion an:

generasacodicetagpre.

Dieser Code zählt die Gesamtlänge von LCS richtig, gibt jedoch "Hinweis: undefinierter Offset: -1" bei jedem Anruf dieser Zeile in der Druckfunktion generationspflichtig und druckt nichts. Ich habe fast alles ausprobiert, um die Zeichenfolge von $ STR1 aufzuteilen und dann an die Funktion zu fördern, aber nichts funktioniert. Es druckt nicht die LCS-Zeichenfolge, da mit dieser Zeile des Code-GRATION-GRATIONSAGTAGCODE etwas nicht stimmt, das ich nicht bekommen kann. Bitte helfen.

Hinweis: Der Pseudocode des oben genannten Codes wurde aus dem Buch Thomas H. Cormmen, "Einführung in die Algorithmen 3. Ausgabe" entnommen. Ich schreibe es in PHP mit der Absicht, es auszudehnen, damit die LCS von mehr als zwei Zeichenfolgen drucken kann. Ich freue mich, wenn jemand eine Idee aufweist, wie ich diesen Code erweitern kann, so dass er die LCS eines Arrays mit mehreren Saiten wie $ array {'sdsad', 'asddaw', 'asd', ... n} drucken kann. Später beabsichtige ich, das gesamte Programm in Matlab umzuwandeln.

War es hilfreich?

Lösung 2

Ich habe den Fehler gelöst: Ich habe Echo $ x [$ i-1] platziert;Vor LCS_PRINT ($ B, $ X, $ I= $ I-1, $ j= $ J-1);In der LCS_PRINT-Funktion funktioniert alle jetzt in Ordnung.

Andere Tipps

Es gibt Probleme in Ihrer LCS_Length
1.Wenn ($ S1 [$ i-1]== $ s2 [$ j-1]), sollte es sein sollen, wenn ($ s1 [$ i]== $ s2 [$ j])
2. Ihr Grenzzustand ($ j= 0; $ j <$ n) ist unklar, Sie müssen diesen oberen Zug aufnehmen Und Sie versuchen, es zu drucken, um diesen LCS_PRINT ($ Backtracks, $ STR1, $ len1, $ len2) aufzurufen. Es hätte sein sollen ($ j= 0; $ j <= n; $ j ++)

Ich denke, diese Änderungen lösen das Problem. Ich habe keine Codierung in PHP getan, also kann ich nicht über die Syntaxen sagen.

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