import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Map { /** * @param args */ static int size=10; public static int [][] Maze={{0,1,0,0,0,0,0,0,0,0}, {0,1,1,1,1,0,0,0,0,0}, {0,1,0,0,1,0,0,0,0,0}, {0,1,1,1,1,0,0,0,0,0}, {0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,1,1,1,1,0,0}, {0,0,0,0,0,0,0,1,0,0}, {0,0,0,0,0,0,0,1,1,0}, {0,0,0,0,0,0,0,0,1,0}, {0,0,0,0,0,0,0,0,1,0}, } ; static boolean bFlag=false; public static void main(String[] args) { // TODO Auto-generated method stub ListWay.add("0,1"); run(0,1); } public static ArrayList ListWay=new ArrayList(); public static void run(int row,int col) { if((size-1)==row&&(size-2)==col) { for (Iterator iterator = ListWay.iterator(); iterator.hasNext();) { System.out.print(iterator.next()+" "); } System.out.println(); bFlag = true; } if(row>0&&1==Maze[row-1][col]&&!ListWay.contains((row-1)+","+col)) { ListWay.add((row-1)+","+col); run(row-1, col); if(false==bFlag) { ListWay.remove(row-1+","+col); } else { //return; ListWay.remove(ListWay.size()-1); } } if(col<(size-1)&&1==Maze[row][col+1]&&!ListWay.contains(row+","+(col+1))) { ListWay.add(row+","+(col+1)); run(row, col+1); if(false==bFlag) { ListWay.remove(row+","+(col+1)); } else { //return; ListWay.remove(ListWay.size()-1); } } if(row<(size-1)&&1==Maze[row+1][col]&&!ListWay.contains((row+1)+","+(col))) { ListWay.add((row+1)+","+col); run((row+1), col); if(false==bFlag) { ListWay.remove(row+","+(col+1)); } else { //return; ListWay.remove(ListWay.size()-1); } } if(col>0&&1==Maze[row][col-1]&&!ListWay.contains(row+","+(col-1))) { ListWay.add(row+","+(col-1)); run(row, col-1); if(false==bFlag) { ListWay.remove(row+","+(col-1)); } else { //return; ListWay.remove(ListWay.size()-1); } } } }