走迷宫

 

package com.java.ly2011.Semptember;

public class Labyrinth {
 
 public static void main(String[] args) {
  //00为起点   44为出口
  getOutFromHere(0, 0, new StringBuffer(), new int[graph.length][graph[0].length]);
  
 }
 
 //0代表此点可走,1代表此点位路障
// private static int[][] graph = new int[][]{
//  new int[]{0,1,1,0,0},
//  new int[]{0,1,1,0,0},
//  new int[]{0,1,0,0,0},
//  new int[]{0,0,0,1,0},
//  new int[]{1,1,0,1,0}
// };
 private static int[][] graph = new int[][]{
  new int[]{0,0,0,0,0},
  new int[]{0,1,1,0,1},
  new int[]{0,1,0,0,0},
  new int[]{0,0,0,1,0},
  new int[]{1,1,0,1,0}
 };
 
 public static void getOutFromHere(int i ,int j , StringBuffer path , int[][] visit){
  //走此节点
  visit[i][j]=1;
  path.append(i+""+ j+" ");
  
  
  
  if(i==graph.length-1&&j==graph[0].length-1)
   System.out.println(path);
  else{
   if(i+1<graph.length){
    if(graph[i+1][j]==0&&visit[i+1][j]==0){
     getOutFromHere(i+1, j, path, visit);
    }
   }
   
   if(j+1<graph[0].length){
    if(graph[i][j+1]==0&&visit[i][j+1]==0){
     getOutFromHere(i, j+1, path, visit);
    }
   }
   
   if(i-1>=0){
    if(graph[i-1][j]==0&&visit[i-1][j]==0){
     getOutFromHere(i-1, j, path, visit);
    }
   }
   
   if(j-1>=0){
    if(graph[i][j-1]==0&&visit[i][j-1]==0){
     getOutFromHere(i, j-1, path, visit);
    }
   }
  }
  
  //从此节点回来
  visit[i][j]=0;
  path.setLength(path.length()-1-String.valueOf(i).length()-String.valueOf(j).length());
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值