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());
}
}