Die folgende rekursive Funktion hilft dabei, alle Pfade für eine 3X3-Matrix von oben links nach unten rechts zu finden, entweder nach unten oder nach rechts. Aber ich möchte es in eine iterative Funktion umwandeln, so dass ich die Funktion bearbeiten kann, um einen bestimmten vervollständigten Pfad zu finden (nur 1, von links oben nach rechts unten, nach rechts oder unten), der zusammenfasst (Summe der Werte bei jeder Punkt entspricht einer festgelegten Anzahl) einer gewünschten Anzahl, z. 12. Dies ist besonders wichtig für eine größere Matrix z. eine 9 x 1000-Matrix. Wie mache ich es?Wie ändert man diese rekursive Funktion (gibt eine Liste von Pfaden für eine 3X3-Matrix zurück) in iterative Funktion in Python 2.7?
Hinweis für Danoran:
Die Werte sind immer positiv. Wenn Sie sich meine 3X3-Matrix a ansehen, sehen Sie Werte von 1s, 2s und 3s. So ist zum Beispiel die Bewegung von 1 zu 1 zu 1 zu 2 zu 3 (Ziel) ein abgeschlossener Pfad und die Summe ist 8.
Dies findet nur alle Pfade.
a = []
for i in range(3):
r = []
for j in range(3):
r.append(i+1)
a.append(r)
a = Matrix
all_paths = []
def printall(currentRow, currentColumn, nums):
if (currentRow == len(a) - 1):
for i in range(currentColumn, len(a[0])):
nums.append(a[currentRow][i])
all_paths.append(nums)
return all_paths
if (currentColumn == len(a[0]) - 1):
for i in range(currentRow, len(a)):
nums.append(a[i][currentColumn])
all_paths.append(nums)
return all_paths
nums.append(a[currentRow][currentColumn])
printall(currentRow+1, currentColumn, nums[:])
printall(currentRow, currentColumn+1, nums[:])
printall(0,0,[])
print all_paths
Können Sie definieren, was ein kompletter Pfad ist? Ist es ein Pfad, der oben links beginnt und unten rechts endet? – Danoram
Sie möchten also einen Pfad zurückgeben, für den die Summe der Werte an jedem Punkt einer festgelegten Zahl entspricht? nicht die Länge des Pfades selbst – Danoram
Ja, du hast Recht! – Mel