ブラッシングの質問を記録する-(leetcode-695島の最大のエリア)

問題:0と1を含む空でない2次元配列グリッドがあるとします。
島は、いくつかの隣接する1(土地を表す)の組み合わせです。ここでの「隣接」では、2つの1が水平方向または垂直方向に互いに隣接している必要があります。グリッドの4つのエッジすべてが0(水を表す)で囲まれていると想定できます。
与えられた2次元配列で最大の島の領域を見つけます。(島がない場合、返される領域は0です。)
ソース:LeetCode
リンク:https ://leetcode-cn.com/problems/max-area-of-island
著作権はLeetCodeが所有しています商用の再版については、公式の承認に連絡してください。非商用の再版については、出典を示してください。

DFSブルートフォースクラッキング:

int dfs(int row,int col,int** grid, int gridSize, int* gridColSize){
    
    
    if(row<0||row>=gridSize||col<0||col>=*gridColSize||grid[row][col]==0){
    
    
        return 0;
    }
    grid[row][col]=0;
    int count =1;
    count += dfs(row-1,col,grid, gridSize, gridColSize);
    count += dfs(row+1,col,grid, gridSize, gridColSize);
    count += dfs(row,col-1,grid, gridSize, gridColSize);
    count += dfs(row,col+1,grid, gridSize, gridColSize);
    return count;
}
int maxAreaOfIsland(int** grid, int gridSize, int* gridColSize){
    
    
    int result=0;
    for(int i=0;i<gridSize;i++){
    
    
        for(int j=0;j< *gridColSize;j++){
    
    
            if(grid[i][j]==1){
    
    
                const int result_temp = dfs(i,j,grid,gridSize,gridColSize);
                result = (result<result_temp)?result_temp:result;
            }
        }
    }

    return result;
}

おすすめ

転載: blog.csdn.net/lthahaha/article/details/106252240