难度指数:⭐⭐⭐⭐
知识点:广度优先搜索
【华为OD机试真题2023B卷 JAVA&JS】寻找最大价值的矿堆
Mine:
代码实现
import random
m=random.randint(1,300)
n=random.randint(1,300)
miner=[[random.randint(0,2) for _ in range(n)] for _ in range(m)]
print('\n'.join(map(str,miner)))
def dfs(miner,i,j):
if not 0 <= i < m or not 0 <= j < n or miner[i][j]==0: return 0
res=miner[i][j]
miner[i][j]=0
res+=dfs(miner,i-1,j)+dfs(miner,i+1,j)+dfs(miner,i,j-1)+dfs(miner,i,j+1)
return res
value=0
for i in range(m):
for j in range(n):
if miner[i][j]:
value=max(value,dfs(miner,i,j))
print(value)