package corejava;

public class FourThree {
static int [][]a=new int[50][50];
static int [][]b=new int[50][50]; static int m;
static int n;
static int p;
static int q; public static void dfs(int step) {
System.out.println("dfs"+step);
int [][]next={{0,1},{1,0},{0,-1},{-1,0}};
if(b[p][q]>0)
return;
int c=0;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
//System.out.print("b["+i+"]["+j+"]"+b[i][j]);
if(b[i][j]==step+1)
{ for(int k=0;k<4;k++)
{
int tx=i+next[k][0];
int ty=j+next[k][1];
if(tx<0||tx>m||ty<0||ty>n)
{
continue; }
if(a[tx][ty]==0&b[tx][ty]==0)
{
c++;
b[tx][ty]=step+2; System.out.print("step"+(step+1) +"("+tx+","+ty+")");
if(tx==p&ty==q)
{
System.out.println("step"+step); System.out.println(" "); return; } } }
}
}
if(c==0)
return;
dfs(step+1); }
public static void main(String []args)
{ m = 5;
n = 4;
int startx=0;
int starty=0;
p=3;
q=2;
b[startx][starty]=1; a[0][2]=1;
a[2][2]=1;
a[3][1]=1;
a[4][3]=1; dfs(0); } }

这里没有用例子里的结构体,采用了一个数组b【】【】存放该位置可几步到达,因为数组内容默认为0,固存放的为可到达步数加一。一个一个往下延伸。但是这里用到循环来查找,当地图比较大,循环次数会很多。

啊哈算法第四章第三节 层层递进-广度优先搜索 java实现的更多相关文章

  1. 微信小程序教学第四章第三节(含视频):小程序中级实战教程:详情-功能完善

    详情 - 功能完善 本文配套视频地址: https://v.qq.com/x/page/f0555nfdi14.html 开始前请把 ch4-3 分支中的 code/ 目录导入微信开发工具 这一节中, ...

  2. 《On Lisp》第四章第三节图4.6中的rmapcar函数中展现的apply陷阱

    (defun rmapcar (fn &rest args) (if (some #'atom args) (apply fn args) (apply #'mapcar #'(lambda ...

  3. 《On Lisp》第四章第三节图4.3中的prune函数fix

    这个函数作者的原意是删除表中test位真的部分,并且表按原样返回. 作者给出的的测试用例如下: (prune #'evenp '(1 2 (3 (4 5) 6) 7 8 (9))) 返回结果是: (1 ...

  4. 啊哈算法第四章第二节解救小哈Java实现

    package corejava; public class FourTwo { static int m;//(m,n)为几行几列 static int n; static int p;//(p,q ...

  5. 第六章 图(c)广度优先搜索

  6. C# Language Specification 5.0 (翻译)第四章 类型

    C# 语言的类型分为两大类:值类型(value type)和引用类型(reference type),而它们又都同时具有至少一个类型形参的泛型类型(generic type).类型形参(type pa ...

  7. MyBatis 3(中文版) 第四章 使用注解配置SQL映射器

    本章将涵盖以下话题: l 在映射器Mapper接口上使用注解 l 映射语句 @Insert,@Update,@Delete,@SeelctStatements l 结果映射 一对一映射 一对多映射 l ...

  8. 《算法》第四章部分程序 part 19

    ▶ 书中第四章部分程序,包括在加上自己补充的代码,有边权有向图的邻接矩阵,FloydWarshall 算法可能含负环的有边权有向图任意两点之间的最短路径 ● 有边权有向图的邻接矩阵 package p ...

  9. 《算法》第四章部分程序 part 18

    ▶ 书中第四章部分程序,包括在加上自己补充的代码,在有权有向图中寻找环,Bellman - Ford 算法求最短路径,套汇算法 ● 在有权有向图中寻找环 package package01; impo ...

随机推荐

  1. java数据结构之链表(java核心卷Ⅰ读书笔记)

    1.链表 数组和ArrayList的一个重大缺陷就是:从中间位置删除一个元素要付出很大的代价,因为在这个元素删除之后,所有的元素都要向前端移动,在中间的某个位置插入一个元素也是这个原因. (小感悟:s ...

  2. java8_api_正则表达式

    正则表达式    什么是正则表达式    使用String类中的replaceAll方法    使用Pattern类编译正则表达式    使用Matcher类匹配正则表达式 什么是正则表达式      ...

  3. SQL语句整理2

  4. python查询mysql并生成excel表

    需求说明 开发不愿意单独为某个项目做后台 并且运营那边需要合并多个表的数据 因此找上了我. 要求每周执行一次.月初也执行一次 要查询2个mysql数据库多个表并生成excel表 我的想法 找开发要sq ...

  5. python 基础之注释变量常量

    一:注释 注释: 就是对代码的解释 方便大家阅读代码 1.注释的分类 (1)单行注释 #  在python中在行首添加一个#号就将这一行进行注释 #单行注释: 用#开头,后面跟上任意字符串 #pyth ...

  6. postman进行https接口测试所遇到的ssl证书问题,参考别人方法

    参考文档: https://learning.getpostman.com/docs/postman/sending_api_requests/certificates/ 随着 https 的推动,更 ...

  7. error: Cannot find OpenSSL's <evp.h> Mac

    问题 mac安装php需要openssl ./configure –with-openssl 报错 error: Cannot find OpenSSL’s 解决 brew install opens ...

  8. 支持向量机(Support Vector Machine,SVM)

    SVM: 1. 线性与非线性 核函数: 2. 与神经网络关系 置信区间结构: 3. 训练方法: 4.SVM light,LS-SVM: 5. VC维 u-SVC 与 c-SVC 区别? 除参数不同外, ...

  9. Chromium(Chrome) frame structure detail

    1. Chromium VS Chrome Chromium is an open-source Web browser project started by Google, to provide t ...

  10. vmware 中配置centos 7 静态IP

    虚拟机配置成静态IP可以保证每次宿主机器重启后,虚拟机的IP保持不变,这对于学习集群环境下的软件(如hadoop集群,mysql等数据库集群)很有用. vmware workstation 中装好li ...