題目:給定一個包含了一些 0 和 1 的非空二維數組 grid 。
一個 島嶼 是由一些相鄰的 1 (代表土地) 構成的組合,這裏的「相鄰」要求兩個 1 必須在水平或者豎直方向上相鄰。你可以假設 grid 的四個邊緣都被 0(代表水)包圍着。
找到給定的二維數組中最大的島嶼面積。(如果沒有島嶼,則返回面積爲 0 。)
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/max-area-of-island
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
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;
}