Número de ilhas: Árvore e (leetcode)

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; 
    } 
};

 

Acho que você gosta

Origin www.cnblogs.com/vczf/p/12550172.html
Recomendado
Clasificación