MainHanoi

    技术2022-05-20  32

    import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class MainHanoi { static int size = 10; static int[][] maze = {​{0,1,0,0,0,0,0,0,0,0}, {0,1,1,1,1,1,1,1,1,0}, {0,1,0,0,0,0,1,0,1,0}, {0,1,1,0,1,1,1,1,1,0}, {0,1,0,0,1,0,0,0,1,0}, {0,1,1,0,1,1,1,1,0,0}, {0,1,1,0,0,0,0,1,0,0}, {0,1,1,1,1,1,0,1,0,0}, {0,0,0,0,0,1,1,1,1,0}, {0,0,0,0,0,0,0,0,1,0}}; static List listWay = new ArrayList(); // 走过的路 static boolean blFlag = false; // 是否走出去 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.print("/n"); blFlag = 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 == blFlag){// 往走不通,退回一步 listWay.remove(listWay.size()-1); }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 == blFlag){// 往走不通,退回一步 listWay.remove(listWay.size()-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 == blFlag){// 往走不通,退回一步 listWay.remove(listWay.size()-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 == blFlag){// 往走不通,退回一步 listWay.remove(listWay.size()-1); }else{ return; // listWay.remove(listWay.size()-1); } } } public static void main(String[] args) { listWay.add("0,1"); run(0,1); } }  


    最新回复(0)