啊哈算法第四章第三节 层层递进-广度优先搜索 java实现
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实现的更多相关文章
- 微信小程序教学第四章第三节(含视频):小程序中级实战教程:详情-功能完善
详情 - 功能完善 本文配套视频地址: https://v.qq.com/x/page/f0555nfdi14.html 开始前请把 ch4-3 分支中的 code/ 目录导入微信开发工具 这一节中, ...
- 《On Lisp》第四章第三节图4.6中的rmapcar函数中展现的apply陷阱
(defun rmapcar (fn &rest args) (if (some #'atom args) (apply fn args) (apply #'mapcar #'(lambda ...
- 《On Lisp》第四章第三节图4.3中的prune函数fix
这个函数作者的原意是删除表中test位真的部分,并且表按原样返回. 作者给出的的测试用例如下: (prune #'evenp '(1 2 (3 (4 5) 6) 7 8 (9))) 返回结果是: (1 ...
- 啊哈算法第四章第二节解救小哈Java实现
package corejava; public class FourTwo { static int m;//(m,n)为几行几列 static int n; static int p;//(p,q ...
- 第六章 图(c)广度优先搜索
- C# Language Specification 5.0 (翻译)第四章 类型
C# 语言的类型分为两大类:值类型(value type)和引用类型(reference type),而它们又都同时具有至少一个类型形参的泛型类型(generic type).类型形参(type pa ...
- MyBatis 3(中文版) 第四章 使用注解配置SQL映射器
本章将涵盖以下话题: l 在映射器Mapper接口上使用注解 l 映射语句 @Insert,@Update,@Delete,@SeelctStatements l 结果映射 一对一映射 一对多映射 l ...
- 《算法》第四章部分程序 part 19
▶ 书中第四章部分程序,包括在加上自己补充的代码,有边权有向图的邻接矩阵,FloydWarshall 算法可能含负环的有边权有向图任意两点之间的最短路径 ● 有边权有向图的邻接矩阵 package p ...
- 《算法》第四章部分程序 part 18
▶ 书中第四章部分程序,包括在加上自己补充的代码,在有权有向图中寻找环,Bellman - Ford 算法求最短路径,套汇算法 ● 在有权有向图中寻找环 package package01; impo ...
随机推荐
- JS写法 数值与字符串的相互转换 取字符中的一部分显示 正则表达规则
http://www.imooc.com/article/15885 正则表达规则 <script type="text/javascript"> </scrip ...
- Linux第四节课学习笔记
touch命令可修改文件atime和mtime,不能修改ctime.可用于修改文件后将修改时间改回之前修改时间. mkdir命令用于创建空白的目录,格式为“mkdir [选项] 目录”.加上参数-p可 ...
- annotation的理解
Annotations提供一些本来不属于程序的数据. 比如:一段代码的作者或者告诉编译器禁止一些特殊的错误.An annotation 对代码的执行没有什么影响.Annotations使用@annot ...
- c#实现识别图片上的验证码数字
这篇文章主要介绍了c#实现识别图片上的验证码数字的方法,本文给大家汇总了2种方法,有需要的小伙伴可以参考下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...
- 1、链表之增、删、查实现(C语言)
一.功能描述: 可以创建节点并添加到链表中.查看链表中的所有节点.并可以删除特定的节点 二.代码实现 1.主函数main主要实现的是从后台键入不同的字符,执行对应的函数来实现特定的操作代码如下: in ...
- Python2.X和Python3.X的w7同时安装使用
一.介绍 Python([ˈpaɪθən])是一种面向对象.解释型计算机程序设计语言.Python语法简洁.清晰,具有丰富和强大的类库. Python源代码遵循GPL(GNU General Publ ...
- HTML5 video 播放视频黑屏
<video width="320" height="240" controls> <source src="movi ...
- postgresql 游标,函数,存储过程使用例子
CREATE OR REPLACE FUNCTION cursor_demo() RETURNS refcursor AS --返回一个游标 $BODY$ declare --定义变量及游标 unbo ...
- C# .net mvc web api 返回 json 内容,过滤值为null的属性
在WebApiConfig.Register 中增加一段 #region 过滤值为null的属性 //json 序列化设置 GlobalConfiguration.Configuration.Form ...
- 黄聪:PHP去掉转义后字符串中的反斜杠\函数stripslashes
addslashes函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes则是去掉转义后字符串中的反斜杠\,比如当你提交一段json数据到PHP端的时候可能会遇到json字符串中有 ...