直接上代码,痛快点。
package algorithm;import junit. work.TestCase;/** * Created by Rocky on 14-3-31. * 下午7:59 */public class MyMaze extends TestCase { /** * @param maze 0表示可走,1表示不可走,2表示这步已走 * @param startI 入口横坐标 * @param startJ 入口竖坐标 * @param endI 出口横坐标 * @param endJ 出口竖坐标 */ public void resolveMaze(int[][] maze, int startI, int startJ, int endI, int endJ) { maze[startI][startJ] = 2; System.out.println("*************走一步***************"); printMaze(maze); if (startI == endI && startJ == endJ) { System.out.println("********************成功*******************"); printMaze(maze); } else { /*向右*/ if(startJ + 1 < maze[startI].length){ if(maze[startI][startJ+1]==0 ){ resolveMaze(maze, startI, startJ+1, endI, endJ); } } /*向下*/ if(startI + 1 < maze.length){ if(maze[startI+1][startJ]==0 ){ resolveMaze(maze, startI+1, startJ, endI, endJ); } } /*向上*/ if(startI -1 >= 0){ if(maze[startI-1][startJ]==0 ){ resolveMaze(maze, startI-1, startJ, endI, endJ); } } /*向左*/ if(startJ- 1 >=0){ if(maze[startI][startJ-1]==0 ){ resolveMaze(maze, startI, startJ-1, endI, endJ); } } } if (maze[startI][startJ] != 0) { maze[startI][startJ] = 0; } System.out.println("*************退一步***************"); printMaze(maze); } private void printMaze(int[][] maze) { for (int i = 0; i < maze.length; i++) { for (int j = 0; j < maze[i].length; j++) { if (maze[i][j] == 2) { System.out.print("* "); } else { System.out.print(maze[i][j] + " "); } } System.out.println(); } } public void test() { int maze[][] = { {0, 0, 3, 3, 3, 3, 3, 3, 3}, {3, 0, 0, 0, 0, 0, 0, 0, 3}, {3, 0, 3, 3, 0, 3, 3, 0, 3}, {3, 0, 3, 0, 0, 3, 0, 0, 3}, {3, 0, 3, 0, 3, 0, 3, 0, 3}, {3, 0, 0, 0, 0, 0, 3, 0, 3}, {3, 3, 0, 3, 3, 0, 3, 3, 3}, {3, 0, 0, 0, 0, 0, 0, 0, 0}, {3, 3, 3, 3, 3, 3, 3, 3, 0}}; resolveMaze(maze,0,0,8,8); }}运行结果:
继续阅读与本文标签相同的文章
上一篇 :
A算法详解
下一篇 :
Open-source Project官方地址
-
统治世界的十大算法
2026-06-02栏目: 教程
-
linux 下Eclipse for C/C++的不常见设置
2026-06-02栏目: 教程
-
java反序列化时的类加载
2026-06-02栏目: 教程
-
Remove SVN From Intellij IDEA
2026-06-02栏目: 教程
-
Mongodb学习文章辑录
2026-06-02栏目: 教程
