我正在學習算法,並正在這樣做problem這是找到區域的數量。我嘗試使用python深度優先搜索方法,但我得到一個調用堆棧超過錯誤。任何人都可以告訴我,我的實施有什麼缺陷,以及如何克服它?該代碼是:在Python中優化DFS
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)
失敗的是100x100的矩陣全部爲1
的錯誤就是讓輸入:
RuntimeError: maximum recursion depth exceeded
謝謝!
這不是DFS ...提示:你的DFS函數不會返回任何東西。 – alfasin
我正在改變矩陣。它適用於較小的輸入。你能告訴我我離開的地方嗎? –
更改矩陣如何幫助您找到連接組件的數量? – alfasin