给你一个由 '0' (空地)、'1' (银矿)、'2'(金矿) 组成的的地图,矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。 假设银矿价值1,金矿价值2 ,请你找出地图中最大价值的矿堆并输出该矿堆的价值。
解题思路:
dfs
函数用于进行深度优先搜索,通过递归实现。find_max_value
函数则在整个地图上遍历,并找出最大价值的矿堆。对于每个非空地点,调用dfs
函数进行搜索,并更新最大价值。
def dfs(grid, i, j):
if i < 0 or i >= len(grid) or j < 0 or j >= len(grid[0]):
return 0
if grid[i][j] == '0':
return 0
value = int(grid[i][j])
grid[i][j] = '0' # 标记当前位置为已访问
total_value = value
total_value += dfs(grid, i+1, j) # 向下搜索
total_value += dfs(grid, i-1, j) # 向上搜索
total_value += dfs(grid, i, j+1) # 向右搜索
total_value += dfs(grid, i, j-1) # 向左搜索
return total_value
def find_max_value(grid):
max_value = 0
for i in range(len(grid)):