题目描述
Luck 有一个象棋棋子“马”,它在一个 n*m 的矩阵棋盘,棋盘左上角坐标为(1,1),右下角坐
标为(n,m),它现在的位置是(sx, sy),现在 Luck 想让它走到目标点(ex, ey)。作为象棋棋子“马”,
它每次可以走到的方式为走一个“日”字,符合象棋规则。作为一名精通"算法设计与分析"课
的长春理工大学本科生,你希望走的步数最少,请输出最少的行走步数。
输入格式
第一行两个整数 n,m(4<=n,m<=1000),代表棋盘的大小。
第二行四个整数,sx, sy, ex, ey ,分别代表初始位置和目标点坐标。
输出格式
一行包含一个整数,代表走的最少步数。
输入样例 1
4 4
1 1 4 4输出样例 1
2
输入样例 2
1000 1000
3 3 1000 1000
输出样例 2
666
java代码:
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 的象棋(深度优先搜索、宽度优先搜索)象棋棋子“马”走日,求最短步数相关推荐

  1. 生成图-深度优先搜索/宽度优先搜索

    问题提出: 考虑如下图所示的简单图所表示的缅因州的道路系统.在冬天里保持道路通路通畅的唯一方式就是经常扫雪.高速公路部分希望只扫尽可能少的道路上的雪,而确保总是存在连接任何两个乡镇的干净道路.如何才能 ...

  2. 广度优先搜索 - 宽度优先搜索 - 横向优先搜索 (breadth-first search,BFS)

    广度优先搜索 - 宽度优先搜索 - 横向优先搜索 (breadth-first search,BFS) 1. 广度优先搜索 - 宽度优先搜索 - 横向优先搜索 (breadth-first searc ...

  3. 广度优先搜索 宽度优先搜索 迷宫问题 最短路径 最少操作 由近及远 队列

    广度优先搜索,也叫宽度优先搜索,从开始状态,到第一次能到达的状态,再从第一次能到达的状态到下一个能到达的状态,直到探索所有可到达的状态,其时间复杂度为O(状态数×转移的方式). 广度优先搜索使用了队列 ...

  4. 迷宫问题 深度优先搜索 广度优先搜索 宽度优先搜索【python】

    文章目录 一.实验内容 二.深度优先搜索和广度优先搜索总结 1.深度优先搜索算法 2.广度优先搜索算法 三.实验代码和用于测试的迷宫 1.实验代码 2.测试迷宫 2.1 maze1.txt 2.2 m ...

  5. 宽度优先搜索与深度优先搜索

    宽度优先搜索算法顺序:1-2-3-4-5-6-7 深度优先搜索算法顺序:1-2-4-5-3-6-7 宽度优先搜索算法(又称广度优先搜索)BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点 ...

  6. 深度优先搜索与宽度优先搜索

    深度优先搜索 简称:DFS 基本思路 深度优先遍历图的方法是,从图中某顶点v出发: (1)访问顶点v: (2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历:直至图中和v有路径相通的顶点都被访问 ...

  7. ACM算法笔记(十)深度优先搜索与宽度优先搜索

    深度优先搜索 事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 下面 ...

  8. 算法笔记01——深度优先搜索(DFS)/宽度优先搜索(BFS)

    深度优先搜索(DFS) 从某个状态开始,不断地转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态,如此不断重复,直至找到最终的解.深度优先搜索从最开始的状态出发,遍历所有可以到达的状态. ...

  9. 深度优先搜索和宽度优先搜索

    深度优先搜索和宽度优先搜索 bfs和dfs都是遍历图的方法.dfs是不撞南墙不回头,bfs慢慢来,一层一层来. 类型 空间(h为高度) 时间(h为高度) 采用的数据结构 特点 DFS O(h) O( ...

最新文章

  1. 自定义控件的构建(5)
  2. python3.6.3安装-CentOS7.2安装Python3.6.3
  3. 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》...
  4. 初中教师资格证计算机试讲教案模板,教案模板:教师资格证面试初中英语万能教案模板...
  5. Alamofire源码导读二:发起请求及内部加锁的逻辑
  6. 物体抓取位姿估計算法綜述_3D视觉技术在机器人抓取作业中的应用
  7. SQL 数据发现和分类
  8. 元素跟随鼠标旋转,未待完续。。。。
  9. Linux下限制用户通过SFTP访问指定目录
  10. g120xa变频器调试参数_西门子G120XA变频器如何进行快速调试
  11. java修改硬盘序列号怎么查_硬盘序列号的查看方法,如果多块硬盘如何查是哪块块的哪块要换掉?...
  12. JavaWeb学习笔记(六)—— JSP连接数据库SQL Server
  13. 阿里云云计算专业认证(ACP)怎么样,怎么学习?
  14. android中的各种 Category
  15. 基于layui的省市镇三级联动js
  16. 我看考研(一)——为什么考研之考研的理由的重要性
  17. 问题:虚拟机中CentOS7不能ping通百度解决心得
  18. 蚂蚁矿池宣布赞助火箭队,吴忌寒这回要把 BCH 印在 NBA 球衣上吗?
  19. web项目使用maven打jar包方式
  20. 嵌入式系统概论-5-总线

热门文章

  1. TinyOS - 点对点通信
  2. 英特尔 AI 引擎,加速 AI 工作负载的强大利器!
  3. 考无忧计算机在线题库,考无忧2017职称计算机考试题库PC版
  4. 计算机三级单片机考试试题及答案,2008秋计算机三级单片机试卷及部分答案
  5. DRS.Technologies.Orca3D.v1.4.20170915.X64犀牛船舶设计
  6. 2005年网络设备市场预测
  7. linux账号5天锁定,Linux学习之六(Linux用户、权限、用户管理命令)2017-03-31
  8. 卸载52好压,极速输入法,手机模拟大师这些流氓软件
  9. 【入门】球弹跳高度的计算 C++题解
  10. 当Transformer遇见偏微分方程求解