老鼠走迷宫java ---递归

news2025/1/12 8:51:10

题目 

有一个八行七列的数组,红色的格子代表墙,白色格子代表可以走的格子;

假定老鼠起点在map【1】【1】,设计算法帮老鼠找到到达终点map【6】【5】的路线。

思路

1.findWay方法就是专门来找出迷宫的路径

2.如果找到,就返回true,否则返回false

3.map 就是二维数组, 即表示迷宫

4.i,j就是老鼠的位置,初始化的位置为(1,1)

5.因为我是递归的找路,所以先规定map数组的各个值得含义

   0表示可以走   1表示障碍物   2表示可以走    3表示走过,但是走不通

6.当map【6】【5】=2就说明找到通路,就可以结束,否则就继续找

7.先确定老鼠找路策略  下=>右=>上=>左

代码

public class MiGong {
    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<8;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<map.length;i++){
            for(int j=0;j<map[i].length;j++){
                System.out.print(map[i][j]);
            }
            System.out.println();
        }
        T t1=new T();
        t1.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 T{
    public boolean findWay(int[][]map,int i,int j){
        if(map[6][5]==2){    //说明已经找到
            return true;
        }else{                //如果还没有找到则继续找,0/3
            if(map[i][j]==0){    //0,表示还未走过,可以走
                map[i][j]=2;     //先假设可以走,设置为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{                             //找不到则置为3,返回false
                    map[i][j]=3;
                    return false;
                }
            }
            else{                //1,2,3,不用再探测
                return false;
            }
        }
    }
}

运行结果

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

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

相关文章

阿里测试师用UI自动化测试实现元素定位!

随着IT行业的发展&#xff0c;产品愈渐复杂&#xff0c;web端业务及流程更加繁琐&#xff0c;目前UI测试仅是针对单一页面&#xff0c;操作量大。为了满足多页面功能及流程的需求及节省工时&#xff0c;设计了这款UI 自动化测试程序。旨在提供接口&#xff0c;集成到蜗牛自动化…

第3章 Micro SaaS 的挑战

目录 1.对系统和平台的依赖 2.个人动力/责任随你而止 3.无尽的客户支持 4.模仿者 最后的想法 尽管 Micro SaaS 有很多好处&#xff0c;但这种商业模式并非没有其独特的缺点&#xff0c;您在开始时需要注意这些缺点。 以下是您需要了解的 Micro SaaS 的一些主要挑战&#…

BeanFactory和FactoryBean,ApplicationContext的关系

他们的区别比较容易理解&#xff0c;从字面意思就能区分开来&#xff0c;BeanFactory是Bean工厂&#xff0c;而FactoryBean是工厂BeanBeanFactory&#xff0c;Spring中工厂的顶层规范&#xff0c;他是IOC容器的核心接口&#xff0c;它的职责包括&#xff1a;实例化、定位、配置…

AIGC AI绘画 Midjourney 参数大全详细列表

AIGC ChatGPT 职场案例60集&#xff0c; Power BI 商业智能 68集&#xff0c; 数据库Mysql8.0 54集 数据库Oracle21C 142集&#xff0c; Office&#xff0c; Python &#xff0c;ETL Excel 2021 实操&#xff0c;函数&#xff0c;图表&#xff0c;大屏可视化 案例实战 http:…

最新AI创作程序源码ChatGPT系统网站源码/Ai绘画系统/支持OpenAI GPT全模型+国内AI全模型/详细搭建部署教程

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统&#xff0c;支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Chat…

【audio】alsa pcm音频路径

文章目录 AML方案音频路径分析dump alsa pcm各个音频路径的原始音频流数据 AML方案音频路径分析 一个Audio Patch用来表示一个或多个source端到一个或多个sink端。这个是从代码的注释翻译来的&#xff0c;大家可以把它比作大坝&#xff0c;可以有好几个入水口和出水口&#xf…

回调函数兼函数指针与仿函数(谓词形式概论)

目录 前言 一、回调函数 1&#xff09;背景引入 2&#xff09;函数指针 3&#xff09;回调函数 4&#xff09;应用实例 &#xff08;1&#xff09;qsort() 库函数介绍 &#xff08;2&#xff09;void* 指针 &#xff08;3&#xff09;qsort() 调用实现 <> 函数指…

一种用于车联网安全数据共享的联邦双向连接宽度学习方案

A Federated Bidirectional Connection Broad Learning Scheme for Secure Data Sharing in Internet of Vehicles 由于IoV是一个多用户移动场景&#xff0c;数据共享的可靠性和效率需要进一步提高。联邦学习允许服务器在不从客户端获取私人数据的情况下交换参数&#xff0c;从…

细粒度特征提取和定位用于目标检测:PPCNN

1、简介 近年来&#xff0c;深度卷积神经网络在计算机视觉上取得了优异的性能。深度卷积神经网络以精确地分类目标信息而闻名&#xff0c;并采用了简单的卷积体系结构来降低图层的复杂性。基于深度卷积神经网络概念设计的VGG网络。VGGNet在对大规模图像进行分类方面取得了巨大…

1.1 基础热图绘制

1 写在前面 最近在作图&#xff0c;一直在寻找《小杜的生信笔记》前期发表的代码。众所周知&#xff0c;小杜的教程基本都是平时自己用到的绘图教程&#xff0c;也是自己一个分享和总结。 自己在后期作图的时候&#xff0c;也会去寻找自己前期的教程作为基础&#xff0c;进行…

Spring Cloud学习笔记【分布式请求链路跟踪-Sleuth】

文章目录 Spring Cloud Sleuth概述概述主要功能&#xff1a;Sleuth中的术语和相关概念官网 zipkin配置下载运行zipkin下载zipkin运行 demo配置服务提供者 lf-userpom.xmlapplication.ymlUserController 服务调用者 lf-authpom.xmlapplication.ymlAuthController 测试 Spring Cl…

mysql面试题24:如何写sql,能够有效的使用到复合索引?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:如何写sql,能够有效的使用到复合索引? 为了能够有效地使用到复合索引,需要考虑以下几点: 索引列顺序:复合索引的列顺序非常重要,应该将最频…

深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(二)

前言 在上一篇深入浅出&#xff0c;SpringBoot整合Quartz实现定时任务与Redis健康检测&#xff08;一&#xff09;_往事如烟隔多年的博客-CSDN博客 文章中对SpringBoot整合Quartz做了初步的介绍以及提供了一个基本的使用例子&#xff0c;因为实际各自的需求任务不尽相同因此并…

redis分布式秒杀锁

-- 获取锁标识&#xff0c;是否与当前线程一致&#xff1f; if(redis.call(get, KEYS[1]) ARGV[1]) then-- 一致&#xff0c;删除return redis.call(del, KEYS[1]) end -- 不一致&#xff0c;直接返回 return 0package com.platform.lock;public interface ILock {/*** 获取锁…

2.5 数字传输系统

笔记&#xff1a; 针对这一节的内容&#xff0c;我为您提供一个笔记的整理方法。将内容按重要性、逻辑关系进行组织&#xff0c;再进行简化。 ## 2.5 数字传输系统 ### 背景介绍&#xff1a; 1. **早期电话网**&#xff1a;市话局到用户采用双绞线电缆&#xff0c;长途干线采…

Ubuntu 20.04使用源码安装nginx 1.14.0

nginx安装及使用&#xff08;详细版&#xff09;是一篇参考博文。 http://nginx.org/download/可以选择下载源码的版本。 sudo wget http://nginx.org/download/nginx-1.14.0.tar.gz下载源代码。 sudo tar xzf nginx-1.14.0.tar.gz进行解压。 cd nginx-1.14.0进入到源代码…

ping使用

使用shell ping一个网段 #!/bin/shfor ib in $(seq 1 254); doip"192.168.1.$ib"(if ping -c3 "$ip" >> 1.txt; thenecho "$ip is alive"fi) &done wait在每次循环的最后&#xff0c;使用 & 将子 shell 放入后台执行&#xff0c…

怒刷LeetCode的第25天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;闭合为环 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;动态规划 方法二&#xff1a;组合数学 方法三&#xff1a;递归 方法四&#xff1a;数学公式 第三题 题目来源 题目内容 解决方法 …

ctfshow-web3(伪协议php://input的利用)

打开题目链接&#xff0c;存在文件包含函数 include 存在文件包含时直接使用PHP伪协议 先介绍一下一个常用的php伪协议&#xff1a; php://input&#xff08;用于执行PHP代码&#xff09; 这是一个只读信息流&#xff0c;当请求方式是post的&#xff0c;并且enctype不等于…

Flink---10、处理函数(基本处理函数、按键分区处理函数、窗口处理函数、应用案例TopN、侧输出流)

星光下的赶路人star的个人主页 我的敌手就是我自己&#xff0c;我要他美好到能使我满意的程度 文章目录 1、处理函数1.1 基本处理函数&#xff08;ProcessFunction&#xff09;1.1.1 处理函数的功能和使用1.1.2 ProcessFunction解析1.1.3 处理函数的分类 1.2 按键分区处理函数&…