| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 数据结构与算法 -> 用队列解决骑士移动问题 -> 正文阅读 |
|
|
[数据结构与算法]用队列解决骑士移动问题 |
一?问题描述计算骑士从一个位置移动到另外一个位置所需的最少移动次数。骑士移动规则如下图。
输入:测试用例包含3行。 第1行:表示棋盘的长度?L,范围在 [4,300],棋盘的大小为?L *?L。 第2行:骑士在棋盘的开始位置。 第3行:骑士在棋盘的结束位置。 输出:输出骑士从起点移动到终点所需的最少移动次数。如果起点和终点相等,则移动次数为零。 下面是三组测试用例的结果。
二?算法设计本问题求解棋盘从起点到终点最短距离问题可以使用队列进行广度优先搜索,步骤如下: 1?如果起点正好等于终点,则返回 0。 2?将起点放入队列。 3?如果队列不为空,则队头出队,否则扩展8个方向,如果找到目标,则立即返回步数加1,否则判断是否越界;如果没有越界,则将步数加1,并放入队列,标记棋盘已访问。如果骑士的当前位置为(x,y),则移动时,当前位置坐标加上偏移量即可。例如骑士从当前位置移到右上角的位置(x-2,y+1),如下图所示。
8个方向的位置偏移如下。 x 方向:{-2,-2,-1,-1,1,1,2,2} y?方向:{1,-1,2,-2,2,-2,1,-1} 三?实现
四?测试绿色为输入,白色为输出
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/8 5:51:28- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |