习题:走迷宫(java回溯dfs)

计蒜客 走迷宫(dfs) 题目: 给一个n行m列的2维迷宫,‘S’表示迷宫的起点,‘T’表示迷宫的终点,’#‘表示不能通过的点,’.‘表示可以通过的点。现在要求从’S’出发走到’T’,每次只能上下左右走动,并且只能进入能通过的点,每个点只能通过一次,现在要求你求出有多少种通过迷宫的方案。 输入格式: 第一行:n,m(1<=n,m<=10)表示迷宫的大小 接下来n行字符串表示迷宫 输出格式: 输入通过迷宫的方法... 阅读详情
package lanqiaobei;

import java.util.Scanner;

/*
习题:走迷宫
给一个n行m列的2维的迷宫,'S'表示迷宫额起点,'T'表示迷宫的终点,'#'表示不能通过的点,'.' 表示可以通过的点。你需要从'S'出发走到'T',每次只能上下左右走动,并且只能进入能通过的点,每个点只能通过一次。现在要求你求出有多少种通过迷宫的的方案。
输入格式
第一行输入n,m (1≤n,m≤10)表示迷宫大小。
接下来输入n行字符串表示迷宫。
输出格式
输入通过迷宫的方法数。
样例输入1
2 3
S.#
..T
样例输出1
2
样例输入2
3 3
S..
.#.
..T
样例输出2
2
 */
public class ZouMiGong {
    private int cont=0;
    private void move(char[][] mg,int x,int y){
        if(mg[x][y]=='T'){
            cont++;
        }else {
            if (x<mg.length-1&&mg[x+1][y]!='#'){
                mg[x][y]='#';
                move(mg,x+1,y);
                mg[x][y]='.';
            }
            if (y<mg[0].length-1&&mg[x][y+1]!='#'){
                mg[x][y]='#';
                move(mg,x,y+1);
                mg[x][y]='.';
            }
           if (x<=mg.length-1&&x>0&&mg[x-1][y]!='#'){
               mg[x][y]='#';
               move(mg,x-1,y);
               mg[x][y]='.';
           }
            if (y<=mg[0].length-1&&y>0&&mg[x][y-1]!='#'){
                mg[x][y]='#';
                move(mg,x,y-1);
                mg[x][y]='.';
            }
        }
    }

    public static void main(String[] args) {
        ZouMiGong g=new ZouMiGong();
        Scanner sc=new Scanner(System.in);
        int x=sc.nextInt();
        int y=sc.nextInt();
        int startx=0;
        int starty=0;
        char[][] a=new char[x][y];
        for (int i = 0; i <x ; i++) {
            for (int j = 0; j <y ; j++) {
                char m=sc.next().charAt(0);
                if (m=='S'){
                    startx=i;
                    starty=j;
                }
                a[i][j]=m;
            }
        }
        g.move(a,startx,starty);
        System.out.println(g.cont);
    }
}

 

【Java算法之dfs 与bfs详解】 Java算法之dfs 与bfs1. dfs1.1 递归1.2 非递归2. bfs2.1 常见两类问题 1. dfs 深度优先遍历(Depth First Search, 简称 DFS) 深度优先遍历各个节点,需要使用到栈(Stack)这种数据结构。Stack的特点是是先进后出,首先将右节点压入栈中,在将左节点压入栈中,这样出栈顺序就是先左节点再右节点。 DFS是图论里面的一种搜索算法,他可以由一个根节点出发,遍历所有的子节点,进而把图中所有的可以构成树的集合都搜索一遍,达到全局搜索的目的。所以很多问题都可以 阅读详情

相关推荐

【算法】蓝桥杯dfs深度优先搜索之图连通总结

前言 上两篇文章 → [《【算法】蓝桥杯dfs深度优先搜索之排列组合总结》](https://blog.csdn.net/midnight_time/article/details/88722460)      → [《【算法】蓝桥杯dfs深度优先搜索之凑算式总结》](https://blog.csdn.net/midnight_time/article/details/88673468)...

midnight_time的博客 2541

DFS:迷宫搜索实践

有一个二维迷宫,n行m列,‘s’表示迷宫的起点,‘T’表示迷宫的终点,‘#’表示围墙,‘.’表示通路。现在从S出发,你不能穿墙,问你能否到达终点,若能将路线打印出来,若不能打印“no”整两中本质是一样的,因此时间复杂度都是一样的,但后者代码量少一些。第一行输入n,m(1

m0_73731708的博客 308

基于Java的迷宫小游戏

基于Java的迷宫小游戏算法与分析

m0_73565130的博客 1990

走迷宫(bfs)

给你一个 n 行 m 列的二维迷宫。'S'表示起点,'T' 表示终点,'#' 表示墙壁,'.' 表示平地。你需要从 'S' 出发走到 'T',每次只能上下左右走动,并且不能走出地图的范围以及不能走到墙壁上。请你计算出走到终点需要走的最少步数。输入格式第一行输入 nnn, mmm 表示迷宫大小。(1≤n,m≤100)(1 \leq n,m \leq 100)接下来输入 nnn 行字符串表示迷宫,每...

我自关山点酒,千秋皆入喉 869

AI影像组学在结直肠癌诊疗中的应用:从特征提取到临床决策

影像组学通过高通量计算从医学影像中提取定量特征,揭示肿瘤内部的微观生物学行为,这些特征反映了纹理异质性、形状不规则度等影像表型。其核心原理在于将图像数据转化为可分析的数字特征,结合机器学习算法进行模式识别,从而实现对疾病状态的精准预测。这一技术的价值在于能够无创、定量地评估肿瘤特性,为精准医疗提供关键支持。在临床实践中,AI驱动的影像组学模型广泛应用于结直肠癌的诊疗全链条,包括肿瘤良恶性鉴别、基因突变预测、治疗反应评估和预后分析等场景。通过整合影像组学特征与临床数据,可以构建预测模型,辅助医生进行更准确的诊

weixin_28295799的博客 410

立创·庐山派-K230-CanMV(嘉楠勘智)开发板通过ATK-ESP8266实现图像识别数据无线传输至原子云

本文详细介绍了如何使用立创·庐山派-K230-CanMV开发板,通过ATK-ESP8266 WIFI模块实现图像识别数据的无线传输至原子云平台。内容包括硬件连接、软件环境搭建、AT指令控制、原子云连接及数据上传的全过程,并提供了实用的调试技巧和常见问题解决方案,为物联网应用开发提供了完整实践指南。

potato的博客 743

走迷宫 路径最短

习题:走迷宫2   消息加载请求中... 您暂时没有新的消息 查看全部消息 习题:走迷宫2 给你一个n行m列的二维迷宫。'S'表示起点,'T' 表示终点,'#' 表示墙壁,'.' 表示平地。你需要从 'S' 出发走到 'T',每次只能上下左右走动,并且不能走出地图的范围以及不能走到墙壁上。请你计算出走到终点需要走的最少步数。 输入格式 第一行输入n, m表示迷宫大小。(1

qq601349586的博客 375

Rust 与 C/C++:Rust 比 C/C++ 更好还是只是“技能问题”?

对于许多嵌入式系统开发人员而言,的崛起似乎掀起了一股不小的浪潮,特别是在相较于传统的语言,Rust的“内存安全”优势让人眼前一亮。然而,是否可以将Rust作为C/C++的替代品?或者说,Rust是否真的比C/C++更好,抑或它只是一个“技能问题”呢?在嵌入式开发的领域,我观察到,尽管Rust在一些高性能、内存安全敏感的场景中受到了广泛推崇,但它在实际应用中的普及度,特别是在嵌入式领域,依然有限。今天,我会从多个角度探讨这个问题,并且分享一些对于Rust、C/C++以及嵌入式系统开发的个人见解。

qq_63315166的博客 1301

走迷宫

给一个 n行m列的2维的迷宫,‘S’表示迷宫的起点,‘T’表示迷宫的终点,’#‘表示不能通过的点,’.’ 表示可以通过的点。你需要从’S’出发走到’T’,每次只能上下左右走动,并且只能进入能通过的点,每个点只能通过一次。现在要求你求出有多少种通过迷宫的的方案。 输入格式 第一行输入n,m(1≤n,m≤10)表示迷宫大小。 接下来输入 nn 行字符串表示迷宫。 输出格式 输入通过迷宫的方法数。 样例...

sky123博客 456

VCL for PHP,Konopka Signature VCL Controls (Raize Components 6.2.3) for Delphi 10.4

The Raize Components suite includes a variety of interface design tools for Delphi programming language and C ++ Builder, which includes over 125 VCL controls and over 100 different tools for creating...

weixin_42137539的博客 855

PADS安装教程(超详细)

声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录

qq_42057393的博客 5万+

【蓝桥杯Java组】用Java带你暴走迷宫—DFS深度优先搜索

带你用Java+DFS深度优先搜索一次性走遍三道迷宫类问题,还不快来点开看看~ 题目 链接 迷宫(一) https://nanti.jisuanke.com/t/T1595 迷宫(二) http://nanti.jisuanke.com/t.

Keep coding! 3346

【swjtu】算法实验2.4分析算法时间复杂度

分析给定算法的时间复杂度。 上机实验,绘制不同输入情况下的运行时间曲线,并与(1)中的分析结果进行比较。 撰写相应的实验报告,实验报告内容包括:实验目的、实验任务、 实验环境、实验步骤、实验结果及其分析以及实验总结等部分内容。

qq_52046937的博客 733

基于深度优先算法和A*算法的迷宫游戏开发(Java实现)

迷宫随机生成 系统用A*算法寻路 输出路径 实现基本游戏界面

weixin_50301255的博客 4539

从地方政府网站抓取政务公开数据:Python爬虫技术详解

在本文中,我们通过具体实例介绍了如何使用Python编写爬虫,从地方政府门户网站抓取政务公开数据。我们使用了requestsSelenium等最新技术,结合SQLite数据库存储抓取的数据,最后使用matplotlib进行数据可视化分析。通过本项目,您可以掌握如何抓取政府网站的公开数据,并将其进行清洗、存储和分析。这些技术对于进行政府政策分析、公共服务分析等方面具有重要的实际意义。希望通过本文的介绍,您能够更好地理解政务数据抓取的流程和方法,并能在实际工作中运用这些技术进行数据采集和分析。

2201_76125261的博客 1704

大学计算 - 方程求解 实训答案 第3关

【代码】大学计算 - 方程求解 实训答案 第3关。

2403_89314916的博客 109

Java算法六:老鼠走迷宫

老鼠走迷宫(Mouse) 问题说明: 老鼠走迷宫是循环求解的基本类型,我们在二维数组中用2来表示迷宫的墙壁,使用1来表示老鼠的行走路径,并用程序求出从入口到出口的距离。 问题解答: 实际上是使用回溯算法求解该问题,就是在上下左右四个方向试探,倘若有路则走一步,在新的位置继续在四个位置试探,并且对走过的路进行标记,倘若走到死胡同里,则退回上一步再来试探,以此类推,类似于图的深度优先算法,使用递归来实现。 结果: Java代码: package com.allen; .

Allenzyg的博客 2074

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java算法-一文搞懂dfs(递归,搜索,回溯,剪枝)

本篇文章讲解了 dfs 算法 的相关知识,希望能帮助到你。

爱是小小的癌的博客 2439

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【基础知识】一文看懂深度优先算法和广度优先算法

先上个图现在我们要访问图中的每个节点,即图的遍历。图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。我们根据访问节点的顺序与方式(根据搜索方法),可以分为广度优先(BFS)和深度优先(DFS),这是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等。我们分别来介绍。

fumeidonga的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

探索迷宫的乐趣:小老鼠走迷宫 Java 版本

探索迷宫的乐趣:小老鼠走迷宫 Java 版本 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 你是否还记得小时候在纸上画迷宫、用铅笔尖小心翼翼地寻找出口的乐趣?现在,这种乐趣可以通过“小老鼠走迷宫”这个基于 Java 的数据结构课设项目再次体验!这个项目不仅是一个有趣的游戏,更是一个深入理解数据结构和算法的绝佳机会。 在这个项目中,玩家将扮演一只小老鼠,通过键盘上的方向...

gitblog_09812的博客 849

迷宫问题Java实现(BFS和DFS)

迷宫问题 迷宫问题算是经常会碰到的,类似于下图,这是一个5x5的迷宫,这里数字1代表可以走的路,数字0代表不可以走的路,从(0,0)到(4,4)显然有两条路径。 1, DFS求迷宫路径 DFS(Depth-First-Search,深度优先搜索),顾名思义总是选择深度大的节点去访问,下面的图是一个二叉树,如果从头结点F开始深度优先遍历,若访问了C则下一个节点不可能是E,因为C和E的深度是一样的,违...

qq_37438740的博客 3334

迷宫问题(Java实现,求最短路径)

题目链接 迷宫问题 定义一个二维数组: int maze[n][m]; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 输入描述: 一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。 int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 样式输出: (0,0) (

就这样吧 9146

递归——走迷宫问题

else if (findWay(map, i - 1, j)) { //向上走。System.out.println("====找路的情况如下====");if (map[i][j] == 0) {//表示这个位置可以为初始位置。System.out.println("====地图如下====");System.out.println("====找路的情况如下====");//先假设这个位置可以走。// 从 (1,1) 开始走。System.out.println("====地图如下====");

2302_81105793的博客 834

【笔试强训】(红与黑,五子棋,走迷宫)DFS+BFS算法解析

(Depth First Search, 简称 DFS) 与广度优先遍历(Breath First Search)是图论中两种非常重要的算法。本文就以习题的方式来给大家讲解 DFS 和 BFS。深度优先遍历主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底… 不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走。

xyk:的博客 1480

DFS讲解及JAVA实现

从白话的角度去说DFS的思想,大约也就是从最开始的状态开始一条路走到底,如果不能寻找到最优解,就从上一个点,再走到底,直到找到最优解。 BFS讲解及Java实现: 所以我们可以诠释一个dfs适用的题型范围:给定一个初始状态和一个目标状态,要求判断这个初始状态到目标状态是否有解。 接下来通过一个经典案例来对于DFS进行一下解释。 DFS 深度优先搜索(Depth-First-Search),简称DF...

0117 1万+

DFS(深度优先搜索)求迷宫题的解法(附详细注释) - java语言

DFS的题目一般不给出邻接矩阵,只给出迷宫图 DFS一般用于求图中起点到终点的路径条数 下面以经典例题为例,给大家DFS算法的刷题模板,习题1中DFS算法中附有详细注释,后面的习题中没有 习题1:走字符迷宫-dfs 给一个n行m列的2维的迷宫,'S’表示迷宫的起点,‘T’表示迷宫的终点, ‘#‘表示不能通过的点,’.’ 表示可以通过的点。你需要从’S’出发走到’T’, 每次只能上下左右走动,并且只...

鸣月my的博客 2643
上一篇: 蓝桥杯习题:汉诺塔(java递归)
下一篇: 习题:踏青(dfs java)
ArchitectDream
博客等级 码龄9年 48粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值