迷宫算法实现

简介: 直接上代码,痛快点。package algorithm;import junit.framework.TestCase;/** * Created by Rocky on 14-3-31.

直接上代码,痛快点。

package algorithm;

import junit.framework.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("*\t");
                } else {
                    System.out.print(maze[i][j] + "\t");
                }
            }
            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);
    }
}

运行结果:




目录
相关文章
|
算法 Python
随机生成迷宫-深度优先搜索算法
在计算机科学中,迷宫生成是一个经典的问题,广泛应用于游戏设计、路径规划等领域。本文将介绍一种常见的迷宫生成算法——深度优先搜索算法(Depth-First Search, DFS),通过随机选择路径进行探索和回溯,最终生成一个随机且有趣的迷宫。
982 1
|
算法 定位技术 C++
基本算法-回溯法(迷宫问题)
基本算法-回溯法(迷宫问题)
1368 0
|
3月前
|
机器学习/深度学习 算法 数据可视化
基于Qlearning强化学习的机器人迷宫路线搜索算法matlab仿真
本内容展示了基于Q-learning算法的机器人迷宫路径搜索仿真及其实现过程。通过Matlab2022a进行仿真,结果以图形形式呈现,无水印(附图1-4)。算法理论部分介绍了Q-learning的核心概念,包括智能体、环境、状态、动作和奖励,以及Q表的构建与更新方法。具体实现中,将迷宫抽象为二维网格世界,定义起点和终点,利用Q-learning训练机器人找到最优路径。核心程序代码实现了多轮训练、累计奖励值与Q值的可视化,并展示了机器人从起点到终点的路径规划过程。
121 0
|
5月前
|
算法 数据可视化 Python
Python中利用遗传算法探索迷宫出路
本文探讨了如何利用Python和遗传算法解决迷宫问题。迷宫建模通过二维数组实现,0表示通路,1为墙壁,&#39;S&#39;和&#39;E&#39;分别代表起点与终点。遗传算法的核心包括个体编码(路径方向序列)、适应度函数(评估路径有效性)、选择、交叉和变异操作。通过迭代优化,算法逐步生成更优路径,最终找到从起点到终点的最佳解决方案。文末还展示了结果可视化方法及遗传算法的应用前景。
151 5
|
7月前
|
算法 编译器 C++
【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)
【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)
|
7月前
|
存储 人工智能 算法
【深度优先搜索篇】走迷宫的魔法:算法如何破解迷宫的神秘密码
【深度优先搜索篇】走迷宫的魔法:算法如何破解迷宫的神秘密码
|
12月前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
11月前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
236 0
|
算法 索引 Python
逆袭算法界!Python分治法、贪心算法、动态规划深度剖析,带你走出算法迷宫!
【7月更文挑战第8天】分治法,如快速排序,将大问题分解并合并解;贪心算法,选择局部最优解,如活动选择;动态规划,利用最优子结构避免重复计算,如斐波那契数列。Python示例展示这些算法如何解决实际问题,助你精通算法,勇闯迷宫。
140 1
|
算法
数据结构与算法-DFS+BFS篇(迷宫问题)
数据结构与算法-DFS+BFS篇(迷宫问题)
214 3

热门文章

最新文章