Java迷宫问题

news2024/10/7 14:25:18

迷宫问题:

问题:

/*
    迷宫问题  :  让小球从左上角开始  到达右上角 绕过障碍物
                求最短路径
                这里*号是障碍物的意思
    * * * * * * *
    *           *
    *   *       *
    * * *       *
    *           *
    *           *
    *           *
    * * * * * * *

    思路 :
    1,创建迷宫, 用二维数组表示  int[][] map = new int[8][7]
    2,先规定map数组的:0 表示可以走的空位,1表示障碍物
 */

 -------------方法思路-------------
     /*
        注:如果下次看不理解为什么可以回溯,或者为什么下去后
            改成3之后回去明明是2为什么会可以回去之类的
            要Debug一下,或者 按照顺序画出流程图

image-20230904234732138

        使用递归回溯的思想来解决老鼠出迷宫
        1,用一个方法findWay,写出出迷宫的程序
        2,如果找到,则返回true 否则返回false
        3,map 就是二维数组 表示迷宫
        4,i,j就是老鼠的位置,初始化的位置为(1,1)
        5,因为我们是递归的找路,所以我先规定map数组的各个值的含义
        0表示可以走i  1表示障碍物 2表示可以走  3 表示走过,但是走不通是死路
        6,当map[6][5] = 2 时 表示走通了,可以退出     否则继续找
        7,老鼠走路的策略: 下》右》上》左  即下面走不通 就走右
 */



全代码:

public class MiGong {
    /*
        迷宫问题  :  让小球从左上角开始  到达右上角 绕过障碍物
                    求最短路径
                    这里*号是障碍物的意思
        * * * * * * *
        *           *
        *   *       *
        * * *       *
        *           *
        *           *
        *           *
        * * * * * * *

        思路 :
        1,创建迷宫, 用二维数组表示  int[][] map = new int[8][7]
        2,先规定map数组的:0 表示可以走的空位,1表示障碍物
     */
    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;
            map[i][0] = 1;
            map[i][6] = 1;
        }
        map[3][1] = 1;
        map[3][2] = 1;
        map[2][2] = 1;

        System.out.println("----------迷宫现状----------");
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[i].length; j++) {
                System.out.print(map[i][j]+"  ");
            }
            System.out.println();
        }
        Test t = new Test();
        t.findWay(map,1,1);
        System.out.println("----------迷宫走后----------");
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[i].length; j++) {
                System.out.print(map[i][j]+"  ");
            }
            System.out.println();
        }
    }
}
class Test {
    /*
            注:如果下次看不理解为什么可以回溯,或者为什么下去后
                改成3之后回去明明是2为什么会可以回去之类的
                要Debug一下,或者 按照顺序画出流程图

            使用递归回溯的思想来解决老鼠出迷宫
            1,用一个方法findWay,写出出迷宫的程序
            2,如果找到,则返回true 否则返回false
            3,map 就是二维数组 表示迷宫
            4,i,j就是老鼠的位置,初始化的位置为(1,1)
            5,因为我们是递归的找路,所以我先规定map数组的各个值的含义
            0表示可以走i  1表示障碍物 2表示可以走  3 表示走过,但是走不通是死路
            6,当map[6][5] = 2 时 表示走通了,可以退出     否则继续找
            7,老鼠走路的策略: 下》右》上》左  即下面走不通 就走右
     */
    public boolean findWay(int[][] map ,int i,int j) {
        if(map[6][5] == 2){
            return true;
        }else {
            if (map[i][j] == 0){
                map[i][j] = 2;
                if(findWay(map,i+1,j)){
                    return true;
                }else if(findWay(map,i,j+1)){
                    return true;
                }else if(findWay(map,i+1,j)){
                    return true;
                }else if(findWay(map,i,j-1)){
                    return true;
                }else {
                    map[i][j] = 3;
                    return false;
                }
            }else {
                return false;
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/973820.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux安装JDK并配置环境变量

1.下载jdk 可以去官网直接下载JDK&#xff0c;下载时选择好需要的版本和操作系统位数 2.安装jdk &#xff08;1&#xff09;选择合适的位置新建安装目录 mkdir -p /home/local/java&#xff08;2&#xff09;进入目录 cd /home/local/java&#xff08;3&#xff09;上传j…

2023年9月CDGA/CDGP数据治理认证考试报名,当然弘博创新

据DAMA中国官方网站消息&#xff0c;2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启&#xff0c;相关事宜通知如下&#xff1a; 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

电子半导体行业电能质量监测与治理系统解决方案 安科瑞 许敏

摘要&#xff1a;在国家鼓励半导体材料国产化的政策导向下&#xff0c;本土半导体材料厂商不断提升半导体产品技术水平和研发能力&#xff0c;逐渐打破了国外半导体厂商的垄断格局&#xff0c;推进中国半导体材料国产化进程&#xff0c;促进中国半导体行业的发展。半导体产品的…

如何让insert程序速度快,可以试试联合SQL(insert 和 select 一起使用)?

查询添加可选择SQL执行&#xff0c;速度远超程序执行 insert 和 select案例 insert into 表1(列1,列2,列3,...) select 列1,列2,列3,...from表2(GROUP BY 列)116511 条数据 耗时45秒&#xff0c; 如果是程序查询然后再insert&#xff0c;则需要30分钟左右&#xff01;&#x…

docker安装mysql8之lower_case_table_names参数

docker安装mysql8之lower_case_table_names参数 前言发现问题找到问题解决方案不挂载外部文件挂载外部文件 前言 既然使用docker安装mysql&#xff0c;看重的就是一键拉取和一键启动&#xff0c;然后在安装mysql容器的过程中&#xff0c;出现了新问题&#xff0c;关于lower_ca…

Python Asyncio 之网络编程方法详解

https://so1n.me/2023/08/29/python_asyncio_lib_network/

CS420 课程笔记 P8 - 如何编辑汇编代码 (最终篇)

文章目录 IntroHardwareReturn to virtual memoryCompilerFinding assembly codeExample!Assembly languageRegisters Assembly ExampleIncDecAddSubMov!NegMulDiv Assembly problem恭喜 Congratulations! Intro 大多数人在走到这里之前就退出了&#xff0c;这里是 game hacki…

nginx--技术文档--基本概念--《十分钟快速扫盲》

nginx是什么&#xff1f; Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。它具有高并发性、稳定性和灵活性&#xff0c;并且使用事件驱动的方式处理请求&#xff0c;能够有效地处理大量并发连接。此外&#xff0c;Nginx还具有高效的内…

总结开发中一些数据处理方法的封装

摘要&#xff1a; 开发中经常会遇到一些组件需要的特定数据结构&#xff0c;后端不一定会返回你需要的数据结构的&#xff0c;所以还是要前端来处理的&#xff01;这里来总结一下平常开发中遇到的需要处理结构的方法&#xff0c;下次遇到直接拿来用就可以了&#xff01; 目录概…

云架构师学习------技术路线与总结

云架构师学习------技术路线与总结 云架构师学习------技术路线与总结一、什么是架构IT架构-数据架构-应用架构IT架构应用架构数据架构 架构的六个层面基础设施层数据层中间层基础服务层业务服务层用户接口层 二、云计算的历史演进与基本原理云计算的本质&#xff1a;资源到架构…

小度音响 小众安卓手机 个别车机等系列mtk芯片刷机 修改 导出系统 root等操作解析

目前很多机型采用的是mtk芯片。包括小度1C.个别车机 或者其他安卓设备。这类机型很少有官方固件或者未曾流出。有的机型限制刷机 root 安装软件等等。那么类似的设备有没有方法来root或者导出系统呢。其实前面几篇博文中我有介绍如何提取备份mtk芯片的系统。今天在这些博文的基…

企业文件数据透明加密保护——防泄密软件系统

天锐绿盾电脑文件数据透明加密、防泄密系统是一款全面的加密软件系统&#xff0c;主要从源头上保障数据安全和使用安全。该系统采用文件过滤驱动实现透明加解密&#xff0c;对用户完全透明&#xff0c;不影响用户操作习惯&#xff0c;从源头上保障企业数据安全。通过对电子文档…

ajax day2

1、 2、控制弹框显示和隐藏&#xff1a; 3、右键tr&#xff0c;编辑为html&#xff0c;可直接复制tr部分的代码 4、删除时&#xff0c;点击删除按钮&#xff0c;可以获取图书id&#xff1a; 5、编辑图书 快速赋值表单元素内容&#xff0c;用于回显&#xff1a; 6、hidden …

python开发之个微机器人的二次开发

简要描述&#xff1a; 取消消息接收 请求URL&#xff1a; http://域名地址/cancelHttpCallbackUrl 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/json 参数&#xff1a; 参数名类型说明codestring1000成功&#xff0c;1…

MySql学习笔记12——数据库设计三范式

数据库设计三范式 第一范式&#xff1a;要求任何一张表必须有主键&#xff0c;每一个字段原子性不可再分。 第二范式&#xff1a;建立在第一范式之上&#xff0c;要求所有非主键字段必须完全依赖主键&#xff0c;不能部分依赖 第三范式&#xff1a;建立在第二范式之上&#…

分享2款微课录制软件,保证让你满意!

“录微课用什么软件呀&#xff0c;真的服了&#xff0c;平台自带的录屏画质太差了&#xff0c;完全看不清讲的内容&#xff0c;而且音质也不是很好&#xff0c;大家有没有微课录制的软件推荐&#xff0c;谢谢啦” 随着教育方式的转型和技术的发展&#xff0c;微课程成为了一种…

虚拟机(三)VMware Workstation 桥接模式下无法上网

目录 一、背景二、解决方式方式一&#xff1a;关闭防火墙方式二&#xff1a;查看桥接模式下的物理网卡是否对应正确方式三&#xff1a;查看物理主机的网络属性 一、背景 今天在使用 VMware Workstation 里面安装的 Windows 虚拟机的时候&#xff0c;发现虽然在 NAT 模式下可以…

2023年9月NPDP产品经理国际认证报名,当然弘博创新

产品经理国际资格认证NPDP是新产品开发方面的认证&#xff0c;集理论、方法与实践为一体的全方位的知识体系&#xff0c;为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会&#xff08;PDMA&#xff09;成立于1979年&#xff0c;是…

C#,数值计算——NRf1(UniVarRealValueFun)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class NRf1 : UniVarRealValueFun { public RealValueFun y1; public RealValueFun y2; public NRf2 f2; public NRf1(RealValueFun y1, RealValueFun y2, RealValueFun z1,…

IMAU鸿蒙北向开发-2023年9月4日学习日志

1 HarmonyOS 1.1 南向设备开发与北向应用开发 上北下南&#xff0c;上层应用开发叫北向&#xff0c;底层设备开发叫南向。 北向&#xff1a;指的纯应用软件开发&#xff0c;基于官方提供的系统SDK进行应用开发&#xff0c;HarmonyOS 目前支持使用java、js、 ets、c、c进行开发…