class testMedium200: #dfs deep-first search 树分支深度优先搜索
def dfs(self, grid, r, c):
grid[r][c] = 0
nr, nc = len(grid), len(grid[0])
for x, y in [(r-1,c),(r+1, c), (r, c-1), (r, c+1)]:
if 0 <= x < nr and 0 <= y <nc and grid[x][y] == '1':
self.dfs(grid, x, y)
def numIslands(self, grid): #grid: List[List(str)] #集合字符串最后以集合的方式接受输出打印
nr = len(grid)
if nr == 0:
return 0
nc = len(grid[0])
num_islands = 0
for r in range(nr):
for c in range(nc):
if grid[r][c] == '1':
num_islands += 1
self.dfs(grid, r , c)
return num_islands
grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"],["1","1","0","0","0"],["0","0","0","0","0"
if __name__ == '__main__':
t = testMedium200()
target = 9
print(t.dfs(grid))
有帮助的话,希望能够采纳支持一下,谢谢!
"""
-*- coding:utf-8 -*-
Author:yang-roc
QQ:327844461
Email:aida_pc@qq.com
Time: 2021-07-30
"""
class testMedium200: # dfs deep-first search 树分支深度优先搜索
def dfs(self, grid, r, c):
grid[r][c] = 0
nr, nc = len(grid), len(grid[0])
for x, y in [(r - 1, c), (r + 1, c), (r, c - 1), (r, c + 1)]:
if 0 <= x < nr and 0 <= y < nc and grid[x][y] == '1':
self.dfs(grid, x, y)
def numIslands(self, grid): # grid: List[List(str)] #集合字符串最后以集合的方式接受输出打印
nr = len(grid)
if nr == 0:
return 0
nc = len(grid[0])
num_islands = 0
for r in range(nr):
for c in range(nc):
if grid[r][c] == '1':
num_islands += 1
self.dfs(grid, r, c)
return num_islands
if __name__ == '__main__':
t = testMedium200()
# 示例①
grid1 = [
["1", "1", "1", "1", "0"],
["1", "1", "0", "1", "0"],
["1", "1", "0", "0", "0"],
["0", "0", "0", "0", "0"]
]
print(t.numIslands(grid1))
# 示例②
grid2 = [
["1", "1", "0", "0", "0"],
["1", "1", "0", "0", "0"],
["0", "0", "1", "0", "0"],
["0", "0", "0", "1", "1"]
]
print(t.numIslands(grid2))
程序运行截图:
dfs打印要非静态的方式打,搞不来非静态 @ — @
类名改成Main,第一个字母大写哦。系统强制要求哈