广度优先(迷宫找人)

 1 import java.util.LinkedList;
 2
 3 public class One {
 4     public static void main(String args[]){
 5         int n,m,p,q;//n,m为数组实际迷宫的行列,p,q为目标地的数组行纵号
 6         int a[][]=new int[51][51],book[][]=new int[51][51];//迷宫和标记数组
 7         int d[][]={{0,1},{1,0},{0,-1},{-1,0}};//方向数组,用于遍历各个方向
 8         Scanner scanner=new Scanner(System.in);
 9         System.out.println("请输入迷宫行列数:");
10         n=scanner.nextInt();
11         m=scanner.nextInt();
12         System.out.println("输入迷宫:");
13         for(int i=1;i<=n;i++){
14             for(int j=1;j<=m;j++){
15                 a[i][j]=scanner.nextInt();
16             }
17             System.out.println("");
18         }
19         System.out.println("请输入目的地数组坐标:");
20         p=scanner.nextInt();
21         q=scanner.nextInt();
22         LinkedList<Note> list=new LinkedList<Note>();
23         //初始化链表第一个点
24         list.add(new Note(1,1,0));
25         book[1][1]=1;
26         int tx,ty,flag=0;//tx,ty用于表示扩展的数组行列号,flag用于表示是否找到了目的点
27         while(!list.isEmpty()){
28             for(int k=0;k<=3;k++){//链表第一个点的扩展(四个方向)
29                 tx=list.getFirst().x+d[k][0];
30                 ty=list.getFirst().y+d[k][1];
31                 //判断是否出界,或者有障碍,或者已经走过了
32                 if(tx<1||ty<1||tx>n||ty>m||a[tx][ty]==1||book[tx][ty]==1)continue;
33                 list.add(new Note(tx,ty,list.getFirst().step+1));//若没有过界,也没有障碍物,则把该扩展点加入到链表后面
34                 if(tx==p&&ty==q){//若该扩展点为目的地,则flag=1表示找到了目的地,并且停止继续查找
35                     flag=1;
36                     break;
37                 }
38             }
39             if(flag==1)break;//若找到了目的地,停止扩展
40             list.removeFirst();
41         }
42         System.out.println(list.getLast().step);
43     }
44 }
45 class Note{
46     int x,y,step;
47     Note(int x,int y,int step){
48         this.x=x;
49         this.y=y;
50         this.step=step;
51     }
52 }

迷宫

时间: 2024-10-07 00:52:23

广度优先(迷宫找人)的相关文章

深度优先搜索[奥数等式、迷宫找人]

上一节我们用暴力枚举解决奥数等式,虽然简单,但是很蛋疼. http://blog.csdn.net/wtyvhreal/article/details/43267867 这一节讲用深搜的方式解决,高大上. 深度优先搜索(Depth First Search,DFS),理解深搜的关键在于解决"当下该如何做".至于"下一步如何做"则与"当下该如何做"是一样的.通常的方法就是把每一种可能都是尝试一遍.当前这一步解决后便进入下一步.下一步的解决方法和当前

不刷信誉怎么找人写好评?亚马逊上可以这么做

不刷信誉怎么找人写好评?亚马逊上可以这么做发布时间:2015-04-22浏览:196我要评论 不刷信誉怎么找人写好评?亚马逊上可以这么做 所谓刷信誉.指在淘宝.拍拍.有啊等购物网站中,买.卖双方以抬高信用为目的,或双方在无实际成交的情况下做出“满意”.“好评”评价的行为.卖家说,不刷信誉不行,别人都有好评,你没有,排名落后一大截.那么,在不花钱刷信誉的前提下怎么来好评呢? 申请品牌.保护自建产品的卖家越来越多了,但完全新建的listing,要成为爆款热销品并不容易,第一个重要的因素就是商品搜索排

大学四年挂了五六门,清考没把握过?侥幸的找人改教务系统里挂科解决办法!

亲们请不要着急找网上的黑客改成绩, 首先,先登录教务系统,看下教务系统是什么版本,很明显,教务系统下面有版权: 学校是外面买的教务系统,如果是正方或者URP或者青果或者乾豪或者金仕达 的则可以达到目的! 首先先分析自己的成绩情况! 请注意,如果以下三点你有的话,那么我帮不了你了! 1,你是否在学校里是极其受关注的学生? 或者是挂科大王,基本全挂呢? 如果是,请绕道! 2,是否很多同学知道你挂科,身边同学知道你找关系活动去弄成绩,或者找人改,同学会举报你吗? 会请绕道! 3,是否辅导员,任课老师,

地图找人应用IOS源码

该源码是地图找人应用源码,上传自己的位置,把这个位置信息和个人信息上传到Bmob云数据库,并且在地图上增加位置的标注点,点击标注可以看到在这个位置的个人信息,另外还可以使用ShareSDk分享本地的位置信息. <ignore_js_op> 运行图 <ignore_js_op> 运行图 <ignore_js_op> 运行图 详细说明:http://ios.662p.com/thread-2161-1-1.html

如何控制成本费用?BPM系统之智能提醒,“事找人”便捷到位

成本费用控制:BPM成本费用控制系统之智能提醒,“事找人”便捷到位 熬夜加班,你是否能照常从睡梦中醒来?好友团聚,你是否不误时日.准时到达?信用账单,你是否记忆清晰并按时还款?如果你的回答是肯定的,也许,你会庆幸有闹钟.便签纸.备忘录这些“小伙伴”,它们给了你及时的友情提示,让你避免了许多不必要的尴尬和麻烦. 关键词索引: BPM,业务流程管理,费用控制,合同管理,采购招投标管理,销售订单管理,异构系统对接集成,流程再造优化, 企业业务流程管理软件,软件项目管理,安码(中国)流程研发中心,Ult

手机短信内容,通话记录,手机定位找人

免责声明:咨 询 Q Q: 2540400410 主要有这方面的一切问题你就直接加这个QQ:2540400410就帮助你了.成功案例等信息在此强烈推荐,他们专业查微信聊天记录,QQ聊天记录,恢复删除的微信聊天记录,查别人的qq聊天记录等.服务QQ: 2540400410.我找过他们,他们有信誉.也许可以帮你,我查我男朋友的聊天记录就是找他们的.~他们的QQ: 2540400410-很专业,信誉很好!希望可以帮助你们.加QQ:2540400410 专业为你服务:手机通话记录查询,手机通话详单查询,

找人上门送贴心,温暖居民笑开怀

近日,在南京市多出小区中的社区活动中,最受居民们欢迎的服务,莫过于维修服务了.来自找人上门居家维修服务中心的工作人员不辞辛苦也要将维修优惠送给广大居民,关注领维修优惠券,还有礼品赠送,居民们忙开了花. 当日上午,在社区活动中,居民纷纷把家里有问题的小家电送往了找人上门居家维修服务的各个维修点,还有直接预约师傅上门进行家电维修服务.维修师傅们根据居民说出的电器问题,拆开家电,认真地检测,小到去球器,大到电饼铛.饮水机等,尽管居民们带来的旧家电五花八门,维修师傅们都细心地检测.看着自己原本坏了的东西

找人上门官网的CSS布局:上中下三栏自适应高度CSS布局

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

洛谷 P2083 找人

P2083 找人 题目背景 无 题目描述 小明要到他的同学家玩,可他只知道他住在某一单元,却不知住在哪个房间.那个单元有N层(1,2……N),每层有M(1,2……M)个房间. 小明会从第一层的某个房间开始找,他找的方式也很特别,每次到了一个房间,如果不是他的同学,他就会询问这人, 然后他就会去那人告诉他的房间号,如果还不是,他就会继续按这个方法找下去,直到找到.当然,他也有可能找不到同学.他的体力也是有限的,他每爬一层楼梯就会消耗V体力值.你的任务就是求找到同学耗费的最少体力值,如果找不到,就输