Ich lerne Algorithmen und machte dies problem, die die Anzahl der Regionen findet. Ich habe versucht eine Tiefensuche mit Python, aber ich bekomme einen Call-Stack-Fehler überschritten. Kann mir jemand sagen, was der Fehler in meiner Implementierung ist und wie man es überwinden kann? Der Code ist:Optimierung von DFS in Python
def findCircleNum(A):
count = 0
def dfs(row, column):
if row < 0 or column >= len(A[0]) or row >= len(A) or column < 0:
return
if A[row][column] == 0:
return
A[row][column] = 0
for i in range(row-1, row+2):
if i >= 0 and i<len(A) and A[i][column] == 1:
dfs(i, column)
for i in range(column-1, column+2):
if i >= 0 and i<len(A[0]) and A[row][i] == 1:
dfs(row, i)
for row in range(len(A)):
for column in range(len(A[0])):
if A[row][column] == 1:
dfs(row, column)
count += 1
return count
findCircleNum(m)
Die Eingangs es nicht auf eine 100x100-Matrix aller 1en
Der Fehler ist erhalten ist:
RuntimeError: maximum recursion depth exceeded
Dank!
Dies ist kein DFS ... Hinweis: Ihre DFS-Funktion gibt nichts zurück. – alfasin
Ich ändere die Matrix an Ort und Stelle. Es funktioniert für kleinere Eingaben. Kannst du mir bitte sagen, wo ich bin? –
Wie hilft Ihnen das Ändern der Matrix, die Anzahl der verbundenen Komponenten zu finden? – alfasin