递归算法小球迷宫问题

小球迷宫.sb3 小球迷宫:蓝色小球要避开蝴蝶的干扰,成功走出迷宫,碰到红色的线表示成功。 立即下载

最近跟着韩老师学数据结构与算法(思路与代码大大感谢韩老师),讲到递归的时候初感觉有点绕,所以总结分享一个小球迷宫问题就算是第一次和递归认识了

(一)简单的ui图如下

在这里插入图片描述

(二)用二维数组设置一个迷宫

package com.lwh.recursion;

/*小球迷宫问题
 *map表示地图
 * i,j表示小球出发点
 * 小球到达【6】【5】表示找到 通路
 * 0代表这个路可以走 1代表墙 2代表通路 3表示该点已经走过但是走不通
 * 暂定策略略是走上右下左(最短路径问题可以改变策略即可)*/
public class MazeDiy {
    public static void main(String[] args) {
        //首先构造一个地图
        int[][] map = new int[8][7];
        //设置外墙
        for (int i = 0; i < 7; i++) {
            map[0][i] = 1;
            map[7][i] = 1;
        }
        for (int i = 0; i < 7; i++) {
            map[i][0] = 1;
            map[i][6] = 1;
        }
        //设置两个内墙
        map[3][1] = 1;
        map[3][2] = 1;
        //打印一下迷宫地图
        System.out.println("迷宫地图如下");
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 7; j++) {
                System.out.print(map[i][j] + " ");
            }
            System.out.println();
        }

(三)写一个setWay递归方法来模拟小球的运动

//setWay递归方法来模拟小球的运动
    public static boolean setWay(int[][] map, int i, int j) {
//如何map[6][5]==2即代表小球到达了地图的最后的一个位置走出了迷宫
        if (map[6][5] == 2) {
            return true;
        } else {
            if (map[i][j] == 0) {
                map[i][j] = 2;//2表示该点走过是通路
                //下面开始进行(递归)上右下左策略进行走
                if (setWay(map, i + 1, j)) {
                    return true;
                } else if (setWay(map, i, j + 1)) {
                    return true;
                } else if (setWay(map, i - 1, j)) {
                    return true;
                } else if (setWay(map, i, j - 1)) {
                    return true;
                } else {
                    //如何都不行,即表示改点不行 是死路
                    map[i][j] = 3;
                    return false;
                }
            } else {
                return false;
            }


        }

(四)最后测试打印一下结果

   //打印一下迷宫地图
        System.out.println("迷宫地图如下");
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 7; j++) {
                System.out.print(map[i][j] + " ");
            }
            System.out.println();
        }
        setWay(map, 1, 1);
        //小球走过的路、
        System.out.println("小球走过的路");
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 7; j++) {
                System.out.print(map[i][j] + " ");
            }
            System.out.println();
        }
    }

结果如下
在这里插入图片描述

WPF数据可视化:LiveCharts自定义X轴与Y轴的5个实战技巧(附完整代码) 本文详细介绍了在WPF应用中使用LiveCharts进行数据可视化时,自定义X轴与Y轴的5个核心实战技巧。内容涵盖精确控制刻度步距、深度定制视觉样式、实现多轴布局对比、优化显示空间以及构建响应式动态轴,并提供了完整的C#和XAML代码示例,帮助开发者创建专业且用户体验出色的图表。 阅读详情

相关推荐

鸿蒙日历组件进阶:教你打造个性化日程管理界面(支持月份切换)

本文深入探讨了鸿蒙应用开发中自定义日历组件的构建方法。通过详解基于Grid的布局设计、核心日期算法、月份切换逻辑以及事件管理集成,指导开发者打造支持个性化日程管理的高性能日历界面,提升应用交互体验。

weixin_29207149的博客 66

利用java中的方法递归调用,解决迷宫问题

判断一个点能否走通的条件是判断周围4个点能否走通,将一个点能否走通的问题一次分解为判断相邻四个点能否走通。1、知道什么条件表示找到路,退出。2、将每个点的类型,进行规定。3、每个点走路的策略进行制定。1、利用二维数组表示迷宫。

lmd187的博客 871

【QGIS、OSM】利用python开源工具实现指定区域的交通分配

如果从osmgnms和grid2demand得到的node.csv,我们要修改path4gnms代码中的utils.py的四处设置。利用QGIS实现可视化,得到的link_performance.csv,参数有volume和VOC。改完这四处代码,就可以运行path4gnms中的tutorial.ipynb了。

weixin_40594084的博客 1279

第 6 章 递归

第 6 章 递归 1、递归介绍 1.1、递归应用场景 看个实际应用场景, 迷宫问题(回溯), 递归(Recursion) 1.2、递归的概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 1.3、递归调用机制 打印问题 阶乘问题 // 阶乘问题 public static int factorial(int n) { if (n == 1) { return 1; } else {

Oneby的博客 1791

Vivado固化程序与Flash型号添加实战指南

本文详细介绍了Vivado程序固化到Flash芯片的完整流程,包括基础操作、Flash型号添加方法及疑难问题排查。针对Vivado官方支持列表缺失的Flash型号,提供了手动添加配置的详细步骤和参数说明,并分享了高级技巧与安全操作建议,帮助开发者高效完成FPGA程序固化。

weixin_29291573的博客 567

DeepSeek-OCR 本地部署使用教程(附完整环境配置与推理示例)

DeepSeek-OCR是由DeepSeek AI推出的开源OCR模型,支持高精度文档识别与结构化输出(如Markdown转换)。本文提供了详细的本地部署指南,包括系统要求(推荐Linux+A100 GPU)、环境配置(Python 3.12.9+PyTorch 2.6.0+CUDA 11.8)、模型下载及两种推理方式:高性能的vLLM(适合批量处理)和灵活的Transformers(适合调试)。支持多种分辨率模式和提示词模板,适用于合同识别、PDF转换等场景。常见问题包括显存优化和性能调优建议。

qq_58607032的博客 6723

迷宫问题--小球找出口(经典递归问题)

迷宫问题–小球找出口(经典递归问题) 递归的经典案例----小球找路 说明:小球得到的路径,和程序设置的找路策略有关:如小球行走的顺序依次为(上下左右,或者上左下右)其路径都不相同 迷宫问题-----小球找路思路分析 ① 使用二维数组模拟地图,小球从(1,1)出发; ② 如果小球在数组的右下角,即(6,5)位置,表示小球找到的路游戏通关; ③ 约定:当数组元素为: 0 的时候,表示这是路径,且没有走过 1的时候表示墙, 2表示通路可走; 3表示该路已经走过了,且时死路; 约定

Cbelieveyouself的博客 2297

n8n实战:动态报表生成与企业微信自动化推送

本文详细介绍了如何利用n8n实现动态报表生成与企业微信自动化推送的全流程。通过配置n8n Form触发器、智能报表生成核心逻辑以及企业微信Webhook推送,帮助企业大幅提升数据收集与报表推送效率,实现从数据录入到报表推送的全自动化处理。

weixin_29267307的博客 305

数据结构之递归解决小球找迷宫出口问题

数据结构之递归解决小球找迷宫出口问题

m0_61931988的博客 797

主题035:计算流体力学(CFD)

计算流体力学(Computational Fluid Dynamics, CFD)是利用数值方法求解流体流动、传热传质等问题的学科。CFD已成为化学反应工程中反应器设计和优化的重要工具。∂ρ∂t+∇⋅(ρu)=0 \frac{\partial \rho}{\partial t} + \nabla \cdot (\rho \mathbf{u}) = 0 ∂t∂ρ​+∇⋅(ρu)=0对于不可压缩流动:∇⋅u=0 \nabla \cdot \mathbf{u} = 0 ∇⋅u=0动量方程:∂(ρu)∂t+∇⋅(ρ

kkchenjj的博客 269

电磁场仿真软件:COMSOL Multiphysics_(17).时域与频域分析

时域和频域分析是电磁场仿真中非常重要的两种方法,每种方法都有其独特的应用场景和优势。时域分析适用于瞬态响应和宽带信号的分析,而频域分析则适用于稳态响应和窄带信号的分析。在COMSOL Multiphysics中,通过合理设置物理场接口、材料属性、边界条件、网格划分和求解器,可以高效地进行这两种分析,并通过傅里叶变换将时域结果转换为频域结果,进一步拓展仿真应用的范围。合理的性能优化措施,如网格划分优化和并行计算,可以显著提高仿真的效率和准确性。

kkchenjj的博客 1978

迷宫算法问题的JAVA解决思路,加深对递归回溯的理解。

迷宫问题的解决思路,加深对递归回溯的理解 使用JAVA语言,但算法思路所有语言共用 文章目录迷宫问题的解决思路,加深对递归回溯的理解使用JAVA语言,但算法思路所有语言共用前言一、迷宫问题是什么?二、代码部分展示1.创建迷宫2.使用递归回溯来给小球找路总结 前言 对于迷宫问题的解决:采用递归的方式对其解决 一、迷宫问题是什么? 迷宫问题的用递归的方式来寻找可以到达目的路径。 二、代码部分展示 1.创建迷宫 此图为迷宫模拟图,红色正方形表示为墙不可走,红色圆球表示小球的位置。 用一个二维数组来模拟

weixin_45499166的博客 757

Visual Studio Code + MCP Server + Claude Code 三件套进行 ABAP 开发

本文介绍了如何在Visual Studio Code中利用Claude Code和SAP官方提供的MCP Server进行ABAP开发。作者分享了19年ABAP开发经验,从手动编码到如今通过自然语言生成高质量代码的技术演进。详细说明了配置步骤:启用ADT MCP Server、安装Claude Code扩展、配置.claude.json文件,并验证MCP Server的14个功能。通过实例演示了如何用自然语言指令让Claude Code创建包含冒泡排序实现和单元测试的ABAP类,展示了MCP Server在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1301

算法1.1:递归和小球迷宫问题

在方法内调用自身eg:​ sout(n)

qq_55630615的博客 596

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

递归学习——迷宫问题:Java实现

迷宫问题简介: 代码实现 public class Maze { public static void main(String[] args) { // TODO Auto-generated method stub // 定义一个迷宫 int[][] migong = new int[8][7]; // 开始设置墙体 // 1、将第一行和最后一行设置为墙体 for (int i = 0; i < 7; i++) { migong[0][i] = 1; mig

qs_266的博客 420

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

递归--迷宫问题(Java)

递归--迷宫问题(Java) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 问题说明 制定好小球的移动路线,让它在迷宫里面找到终点的位置 问题思路 创建一个二维数组作为迷宫的地图 制定好小球的起点和终点位置 确定小球的运动规则,如下右上左 使用递归判断小球是否到达终点 代码 package question; public class Migong { public static void main(String[]

归子莫的博客 1185

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老韩数据结构-迷宫问题递归图解(一)

目录人为规定代码实现图解递归 人为规定 1. map表示地图 2. i, j 表示从地图的那个位置开始出发(1,1)(绿色三角形标记) 3. 如果小球能到map[6][5]位置(红色三角形标记),则说明通路找到 4. 约定:当map[i][j] 为0表示该点没有走过 当为1时表示墙;2 表示通路可以走 3 表示该位置已经走过,但是走不通 5. 在走迷宫时,需要确定一个策略(方法) 下-->右-->上-->左,如果该点走不通,则回溯 代码实现 public class MiGong

快乐学术猿 1253

数据结构 递归 小球走迷宫的问题

文章目录实现要求class MazeApp执行结果 实现要求 class MazeApp public class MazeApp { public static void main(String[] args) { int[][] map = new int[8][7]; /** * 设置第一行和最后一行为墙,设置为1 */ for(int i=0;i<7;i++){ map

qq_45858803的博客 170

递归--迷宫问题

1 需求如下图: 这里直接上底层代码: package com.sheng.recursion; public class MiGong { public static void main(String[] args) { // 先创建一个二维数组,模拟迷宫 // 地图 int[][] map = new int[8][7]; // 使用1 表示墙 // 上下全部置为1...

不言尘世 160

【数据结构】递归---迷宫

文章目录1. 递归调用2. 迷宫问题 1. 递归调用 递归调用机制: 遵守规则: 2. 迷宫问题 1. 策略:按照下右上左 代码实现 public class MiGong { public static void main(String[] args) { //创建一个二维数组,模拟迷宫 int[][] map = new int[8][7]; ...

JH灰色的博客 228

数据结构递归-迷宫问题(Java版)

迷宫问题 红色区域代表墙,白色区域代表小球可以走的路径 要求:从左上角第一个白格起步,一直到右下角的白格 在讲到该题之前,我们先了解一下递归 递归的概念 简单的说: 递归就是方法**自己调用自己,**每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。 递归能解决什么样的问题 递归用于解决什么样的问题 1)各种数学问题如: 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题, 球和篮子的问题(google编程大赛) 2)各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治

wang_hahah的博客 1000

递归-迷宫问题:

递归实现迷宫问题(Java)

qq_27278865的博客 197

递归解决迷宫问题

package com.pro.recursion; /** * @Description * @author kansir * @version * @date 2019年8月10日 上午8:49:10 */ public class Maze { public static void main(String[] args) { // 创建一个二维数组模拟迷宫/ int...

jdbfvhxx的博客 361

利用递归解决迷宫问题

利用递归解决迷宫问题

orang_e的博客 341

递归回溯求迷宫

递归回溯求迷宫

qq_44300280的博客 234

递归,迷宫回溯问题【Java实现】

使用递归解决迷宫回溯问题,找到从迷宫起点走到终点的路线

qq_45702990的博客 289
上一篇: vue父子间组件通信最简单理解分析
下一篇: 五子棋算法之稀疏数组算法(内存压缩优化处理)
来来爱编程
博客等级 码龄7年 375粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值