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]]: p>
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