アイデアは、再帰ループの裁判官を使用することですが、出口への道を見つけました
パブリック クラスMiGong { 公共 静的 ボイドメイン(文字列[]引数){ // 地图 のint [] []にマッピング= 新しい INT [8] [7 ]。 // 墙 ため(INT I = 0、I <7; I ++ ){ 地図[ 0] [I] = 1 。 地図[ 7] [I] = 1 。 } のための(INT ; I <8 I ++ iは1 = {) マップ[i]が[ 0] = 1 ; 地図[I] [ 6] = 1 。 } マップ[3] [1] = 1。。 、 地図[ 3] [2] = 1。。 、 マップ[ 1] [2] = 1。。 、 マップ[ 2] [2] = 1 ; // 出力マップ 用(INT I; I = 0 <8; I ++ ){ ため(INT J = 0; J <7; J ++ ){ System.out.print(マップ[I] [J]の + "" ); } のSystem.out.println(); } システム。 out.printlnを(); // 双方向見つけるための再帰的なバックトラック setWay(地図、1、1 ); のため(int型を0 = I; I <8; I ++ ){ ため(INT J = 0; J <7; J ++ ){ System.out.print(地図の[I] [J] + "" ); } のSystem.out.println( ); } } // 1から0は2に示す3行き止まりを表す通過することができない壁を表していない / ** * @param マップマップ * @param iは開始位置 * @param Jを * @return true、そうでないリターンを見つけますfalseに * / パブリック 静的 ブール setWay(INT [] []地図、int型の I、int型J){ 場合(地図[6] [5] == 2 ){ 戻り 真。 } 他{ 場合(地図[I] [J] == 0 ){ マップ[I] [J] = 2 ; もし(setWay(マップ、iが+ 1 、J)){ 戻り 真。 } 他の 場合(setWay(マップ、I、J + 1 )){ 戻り 真。 } そう であれば(setWay(マップ、I - 1 、J)){ 返す 真; } 他の 場合(setWay(マップ、I、J - 1 )){ 戻り 真。 } 他{ マップ[I] [J] = 3 ; リターン はfalse ; } } 他{ 戻り 偽。 } } } }