Red de conocimiento informático - Problemas con los teléfonos móviles - Copa Lanqiao de Python: Hay un terreno de cultivo dividido en bloques N*M. ¿Están creciendo cultivos y malezas en las tierras de cultivo?

Copa Lanqiao de Python: Hay un terreno de cultivo dividido en bloques N*M. ¿Están creciendo cultivos y malezas en las tierras de cultivo?

Idea: primero guarde los datos de entrada en una matriz de cadena bidimensional o una matriz 0,1 para facilitar las estadísticas posteriores. Luego, puede usar union search o dfs para contar las tierras agrícolas adyacentes en cuatro direcciones y devolver el número de áreas de tierras agrícolas independientes

Tome la búsqueda profunda como ejemplo: primero convierta a una matriz 0/1 (1 significa tierras agrícolas, 0 significa malezas) Luego recorra la matriz y realice dfs cuando encuentre una coordenada con un valor de 1, ans+1 Al final del recorrido, devuelva ans

Parte del código Python:

m = len(arr)

n = len(arr[0])

ans = 0

def dfs(i,j) :

arr[i][j] = 0

para x,y en [[i+1,j],[i-1,j],[i,j +1],[i,j-1]]:

si no(0<=x

continuar

dfs (x,y)

para i en el rango(m):

para j en el rango(n):

si arr[i][j] == 1:

dfs(i,j)

ans += 1

volver y