- #刷题
迷宫的小问题,大家帮忙看一下,加大米

95215
就是找到所有可以从起点到终点的路径,我搜了一下代码:
package org.stack;[br][/br][br][/br]public class Maze {[br][/br][br][/br] private static int startI,startJ;//入口坐标[br][/br][br][/br] private static int endI,endJ;//出口坐标[br][/br][br][/br] [br][/br][br][/br] public void start(int startI,int startJ){[br][/br][br][/br] this.startI=startI;[br][/br][br][/br] this.startJ=startJ;[br][/br][br][/br] }[br][/br][br][/br] public void end(int endI,int endJ){[br][/br][br][/br] this.endI=endI;[br][/br][br][/br] this.endJ=endJ;[br][/br][br][/br] }[br][/br][br][/br] public static void main(String[] args) {[br][br][/br] int maze[][] ={{2, 2, 2, 2, 2, 2, 2, 2, 2}, [br][/br][br][/br] {2, 0, 0, 0, 0, 0, 0, 0, 2}, [br][/br][br][/br] {2, 0, 2, 2, 0, 2, 2, 0, 2}, [br][/br][br][/br] {2, 0, 2, 0, 0, 2, 0, 0, 2}, [br][/br][br][/br] {2, 0, 2, 0, 2, 0, 2, 0, 2}, [br][/br][br][/br] {2, 0, 0, 0, 0, 0, 2, 0, 2}, [br][/br][br][/br] {2, 2, 0, 2, 2, 0, 2, 2, 2}, [br][/br][br][/br] {2, 0, 0, 0, 0, 0, 0, 0, 2}, [br][/br][br][/br] {2, 2, 2, 2, 2, 2, 2, 2, 2}}; [br][/br][br][/br] [br][/br][br][/br] create(maze);[br][/br][br][/br] Maze cell=new Maze();[br][/br][br][/br] cell.start(1, 1);[br][/br][br][/br] cell.end(7, 7);[br][/br][br][/br] [br][/br][br][/br] visited(maze, startI, startJ);[br][/br][br][/br] }[br][/br][br][/br] [br][/br][br][/br] public static void visited(int[][] cell,int i,int j){[br][/br][br][/br] cell[i][j]=1;[br][/br][br][/br] if(i==endI&&j==endJ){[br][/br][br][/br] System.out.println("走完一条路线");[br][/br][br][/br] for(int m=0;m<cell.length;m++){[br][/br][br][/br] for(int n=0;n<cell[0].length;n++){[br][/br][br][/br] if(cell[m][n]==2){[br][/br][br][/br] System.out.print("#");[br][/br][br][/br] }else if (cell[m][n]==1) {[br][/br][br][/br] System.out.print("*");[br][/br][br][/br] }else {[br][/br][br][/br] System.out.print(" ");[br][/br][br][/br] }[br][/br][br][/br] }[br][/br][br][/br] System.out.println();[br][/br][br][/br] }[br][/br][br][/br] }[br][/br][br][/br] [br][/br][br][/br] //向右[br][/br][br][/br] if(cell[i][j+1] == 0){[br][/br][br][/br] visited(cell, i, j+1);[br][/br][br][/br] }[br][/br][br][/br] //向下[br][/br][br][/br] if(cell[i+1][j] == 0){[br][/br][br][/br] visited(cell, i+1, j);[br][/br][br][/br] }[br][/br][br][/br] //向左[br][/br][br][/br] if(cell[i][j-1] == 0){[br][/br][br][/br] visited(cell, i, j-1);[br][/br][br][/br] }[br][/br][br][/br] //向上[br][/br][br][/br] if(cell[i-1][j] == 0){[br][/br][br][/br] visited(cell, i-1, j);[br][/br][br][/br] }[br][/br][br][/br] [br][/br][br][/br] cell[i][j]=0;[br][/br][br][/br] }[br][/br][br][/br] [br][/br][br][/br] [br][/br][br][/br] //打印迷宫图[br][/br][br][/br] public static void create(int[][] maze){[br][/br][br][/br] for(int i=0;i<maze.length;i++){[br][/br][br][/br] for(int k=0;k<maze.length;k++){[br][/br][br][/br] if(maze[i][k]==2){[br][/br][br][/br] System.out.print("#");[br][/br][br][/br] }else {[br][/br][br][/br] System.out.print(" ");[br][/br][br][/br] }[br][/br][br][/br] }[br][/br][br][/br] System.out.println();[br][/br][br][/br] }[br][/br][br][/br] }[br][/br][br][/br]}路径张贴之后就不好看了,大家可以再eclipse里运行一下,Here is my Q:[br][/br][br][/br]第一次遍历数组到了点A[5,7],再往下就不是0了,接下来改怎么运行呢?我感觉卡住了[/i][/i][/i][/i][/i]