Luck 的象棋(深度优先搜索、宽度优先搜索)象棋棋子“马”走日,求最短步数
package asdf;import java.util.ArrayDeque;
import java.util.Queue;
//1 1 3 1
//2
import java.util.Scanner;public class HorseCount {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String[] size=sc.nextLine().split(" ");int sizex=Integer.parseInt(size[0]);int sizey=Integer.parseInt(size[1]);String[] str=sc.nextLine().split(" ");int x=Integer.parseInt(str[0]);int y=Integer.parseInt(str[1]);int desx=Integer.parseInt(str[2]);int desy=Integer.parseInt(str[3]);horse(x,y,desx,desy,sizex,sizey);sc.close();}private static void horse(int x,int y,int desx,int desy,int sizex,int sizey) {boolean[][] visited=new boolean[9][9];Queue<Node> queue=new ArrayDeque<>();int[][] axes= {{1,2},{1,-2},{2,1},{2,-1},{-1,2},{-1,-2},{-2,1},{-2,-1}};for(int i = 1;i<=8;i++){for(int j = 1;j<=8;j++){visited[i][j] = false; }}Node node=new Node(x,y,0);visited[x][y] = true; queue.offer(node);while(!queue.isEmpty()) {Node front=queue.poll();int a=front.x;int b=front.y;int step=front.step; if(a==desx&&b==desy) {System.out.println(step);}else {for(int i=0;i<axes.length;i++) { int hx=a+axes[i][0];int hy=b+axes[i][1];int hstep=step+1;Node ho=new Node(hx,hy,hstep);;if(ho.x>=1&&ho.x<=sizex&&ho.y>=1&&ho.y<=sizey&&visited[ho.x][ho.y]==false) {queue.offer(ho);visited[ho.x][ho.y]=true;}}} }}
}
class Node{ public int x;public int y;public int step;public Node(int x,int y,int step){this.x = x;this.y = y;this.step=step;}
}
//数组大小可以手动设置,怕越界的话可以设置的大一点。boolean[][] visited=new boolean[9][9];比如9可以设置成1000
Luck 的象棋(深度优先搜索、宽度优先搜索)象棋棋子“马”走日,求最短步数相关推荐
- 生成图-深度优先搜索/宽度优先搜索
问题提出: 考虑如下图所示的简单图所表示的缅因州的道路系统.在冬天里保持道路通路通畅的唯一方式就是经常扫雪.高速公路部分希望只扫尽可能少的道路上的雪,而确保总是存在连接任何两个乡镇的干净道路.如何才能 ...
- 广度优先搜索 - 宽度优先搜索 - 横向优先搜索 (breadth-first search,BFS)
广度优先搜索 - 宽度优先搜索 - 横向优先搜索 (breadth-first search,BFS) 1. 广度优先搜索 - 宽度优先搜索 - 横向优先搜索 (breadth-first searc ...
- 广度优先搜索 宽度优先搜索 迷宫问题 最短路径 最少操作 由近及远 队列
广度优先搜索,也叫宽度优先搜索,从开始状态,到第一次能到达的状态,再从第一次能到达的状态到下一个能到达的状态,直到探索所有可到达的状态,其时间复杂度为O(状态数×转移的方式). 广度优先搜索使用了队列 ...
- 迷宫问题 深度优先搜索 广度优先搜索 宽度优先搜索【python】
文章目录 一.实验内容 二.深度优先搜索和广度优先搜索总结 1.深度优先搜索算法 2.广度优先搜索算法 三.实验代码和用于测试的迷宫 1.实验代码 2.测试迷宫 2.1 maze1.txt 2.2 m ...
- 宽度优先搜索与深度优先搜索
宽度优先搜索算法顺序:1-2-3-4-5-6-7 深度优先搜索算法顺序:1-2-4-5-3-6-7 宽度优先搜索算法(又称广度优先搜索)BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点 ...
- 深度优先搜索与宽度优先搜索
深度优先搜索 简称:DFS 基本思路 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v: (2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历:直至图中和v有路径相通的顶点都被访问 ...
- ACM算法笔记(十)深度优先搜索与宽度优先搜索
深度优先搜索 事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 下面 ...
- 算法笔记01——深度优先搜索(DFS)/宽度优先搜索(BFS)
深度优先搜索(DFS) 从某个状态开始,不断地转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态,如此不断重复,直至找到最终的解.深度优先搜索从最开始的状态出发,遍历所有可以到达的状态. ...
- 深度优先搜索和宽度优先搜索
深度优先搜索和宽度优先搜索 bfs和dfs都是遍历图的方法.dfs是不撞南墙不回头,bfs慢慢来,一层一层来. 类型 空间(h为高度) 时间(h为高度) 采用的数据结构 特点 DFS O(h) O( ...
最新文章
- 自定义控件的构建(5)
- python3.6.3安装-CentOS7.2安装Python3.6.3
- 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》...
- 初中教师资格证计算机试讲教案模板,教案模板:教师资格证面试初中英语万能教案模板...
- Alamofire源码导读二:发起请求及内部加锁的逻辑
- 物体抓取位姿估計算法綜述_3D视觉技术在机器人抓取作业中的应用
- SQL 数据发现和分类
- 元素跟随鼠标旋转,未待完续。。。。
- Linux下限制用户通过SFTP访问指定目录
- g120xa变频器调试参数_西门子G120XA变频器如何进行快速调试
- java修改硬盘序列号怎么查_硬盘序列号的查看方法,如果多块硬盘如何查是哪块块的哪块要换掉?...
- JavaWeb学习笔记(六)—— JSP连接数据库SQL Server
- 阿里云云计算专业认证(ACP)怎么样,怎么学习?
- android中的各种 Category
- 基于layui的省市镇三级联动js
- 我看考研(一)——为什么考研之考研的理由的重要性
- 问题:虚拟机中CentOS7不能ping通百度解决心得
- 蚂蚁矿池宣布赞助火箭队,吴忌寒这回要把 BCH 印在 NBA 球衣上吗?
- web项目使用maven打jar包方式
- 嵌入式系统概论-5-总线
热门文章
- TinyOS - 点对点通信
- 英特尔 AI 引擎,加速 AI 工作负载的强大利器!
- 考无忧计算机在线题库,考无忧2017职称计算机考试题库PC版
- 计算机三级单片机考试试题及答案,2008秋计算机三级单片机试卷及部分答案
- DRS.Technologies.Orca3D.v1.4.20170915.X64犀牛船舶设计
- 2005年网络设备市场预测
- linux账号5天锁定,Linux学习之六(Linux用户、权限、用户管理命令)2017-03-31
- 卸载52好压,极速输入法,手机模拟大师这些流氓软件
- 【入门】球弹跳高度的计算 C++题解
- 当Transformer遇见偏微分方程求解