Dado que consiste em '1'
(terra), e '0'
(água) consistindo de grade bidimensional, o número de ilhas de computação. Uma ilha rodeada por água, e é através da direcção horizontal ou vertical está ligado a cada terreno adjacente. Você pode assumir que a água ao redor dos quatro lados da grade são.
Exemplo 1:
Entrada: 11110 11010 11000 00000 de saída: 1
Exemplo 2:
Entrada: 11000 11000 00100 00011 de saída: 3
Solução (C ++):
classe Solution { público : // 广度优先搜索 vazios dfs (vector <vector < caractere >> & grid, int x, int y) { int nx = grid.size (); int ny = grade [ 0 ] .size (); grade [x] [y] = ' 0 ' ; se (x- 1 > = 0 && grade [x- 1 ] [y] == ' 1 ' ) dfs (grade, x- 1 , y); se (x + 1 <nx && grade [x +1 ] [y] == ' 1 ' ) dfs (grade, x + 1 , y); se (y- 1 > = 0 && grade [x] [y- 1 ] == ' 1 ' ) dfs (grade, x, y 1 ); se (y + 1 <ny && grade [x] [y + 1 ] == ' 1 ' ) dfs (grade, x, y + 1 ); } Int numIslands (vector <vector < caractere >> & grade) { int ilha = 0 ; para ( inti = 0 ; i <grid.size (); i ++ ) { para ( int j = 0 ; j <grade [ 0 ] .size (); j ++ ) { se (grelha de [i] [j] == ' 1 ' ) { ++ ilha; dfs (grade, i, j); } } } Retornar ilha; } };