登录
  • #刷题

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

TonyJang
952
15
就是找到所有可以从起点到终点的路径,我搜了一下代码:
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]
15条回复
热度排序

发表回复