695島(ディープサーチ)の最大面積

再帰アルゴリズムはとてもきれいでした

1  / ** 
2  重リンクリストのための*の定義。
3  *パブリッククラスListNode {
 4  * INTヴァル。
5  * ListNode次。
6  * ListNode(INT X){ヴァル= X。}
 7  *}
 8   * / 
9  クラスソリューション{
 10      静的 INT エリア、列、行、TEMP;
11      静的 INT [] []グリッド。
12      静的 INT [] [] DXY = {{0,1}、{1,0}、{0、-1}、{ - 1,0}}。// 四联通分量
13の 
14      プライベート 無効 DFS(int型 I、int型J){
 15          TEMP ++ ;
 16          グリッド[I] [J] = 0; // 計算島ブロックを削除する
17。         ためにint型 K = 0; K <4; K ++ ){
 18が             INT X = I + DXY [K] [0]、Y = J + DXY [K] [1 ];
 19              IF(X> = 0 && X <COI && Y> = 0 && Y <行&&グリッド[X] [Y] == 1 )DFS(X、Y);
 20である         }
 21のISは     }
 22は、 
23である     公共 INT maxAreaOfIsland(INT [] []グリッド){
 24個の         // 最初のグローバル変数
25          面積= 0 ;
 26である          COI = grid.length;
 27         =グリッドの行[0 ] .LENGTH;
 28          この .grid = グリッド;
 29          // 入口ループ
30          のためにINT I = 0;私は<grid.lengthは、I ++ ){
 31である             ためINT J = 0; J <グリッド[ 0] .LENGTH; J ++ ){
 32                  IF(グリッド[I] [J] == 1){ //
 33が                      TEMP = 0;   // 初期領域の設定値
34は、                      DFS(I、J); // 再帰検索
35                      IF(領域<TEMP)面積= TEMP; // 島ブロックに島は、記録領域の値が比較された
36                  }
 37              }
38          }
 39          リターンエリア。
40      }
 41 }

 

おすすめ

転載: www.cnblogs.com/NiBosS/p/12003806.html