私はアルゴリズムを学んでいて、これを実行して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)
それが失敗し、エラーが取得され、すべて1の
の100x100の行列で入力されている:
RuntimeError: maximum recursion depth exceeded
ありがとう!
これはDFSではありません。ヒント:DFS関数は何も返しません。 – alfasin
マトリクスを変更しています。それはより小さい入力のために働く。私はどこにいるのか教えてくれますか? –
マトリックスを変更すると、接続されているコンポーネントの数がわかりますか? – alfasin