计算最大岛面积

发布时间 2023-07-21 09:56:26作者: 知冷知热

给定一串二维数组,其中0代表水,1代表陆地,只有横向或纵向相邻的1才算连接的陆地,计算数组中最大岛面积,岛面积指相邻的1的总数量。

使用dfs深度算法

        $grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],
          [0,0,0,0,0,0,0,1,1,1,0,0,0],
          [0,1,1,0,1,0,0,0,0,0,0,0,0],
          [0,1,0,0,1,1,0,0,1,0,1,0,0],
          [0,1,0,0,1,1,0,0,1,1,1,0,0],
          [0,0,0,0,0,0,0,0,0,0,1,0,0],
          [0,0,0,0,0,0,0,1,1,1,0,0,0],
          [0,0,0,0,0,0,0,1,1,0,0,0,0]]; $m = count($grid); $n = count($grid[0]); $x = 0; for($i=0;$i<$m;$i++){ for($j=0;$j<$n;$j++){ if ($grid[$i][$j] == 1){ $temp = $this->zidingyi($grid,$i,$j); if($temp > $x){ $x = $temp; } } } } print_r($x); public $is_have = []; public function zidingyi($grid,$i,$j){ if (isset($this->is_have[$i][$j])){ return 0; } $this->is_have[$i][$j] = 1; if(isset($grid[$i][$j]) && $grid[$i][$j] == 1){ $temp = 1; }else{ return 0; } $temp += $this->zidingyi($grid,$i+1,$j); $temp += $this->zidingyi($grid,$i-1,$j); $temp += $this->zidingyi($grid,$i,$j+1); $temp += $this->zidingyi($grid,$i,$j-1); return $temp; }