题目描述
有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步
输入
一行四个数据,棋盘的大小和马的坐标

输出
一个n*m的矩阵,同一行元素之间用空格分离。代表马到达某个点最少要走几步。不能到达则输出-1。
样例输入
3 3 1 1
样例输出
0 3 2
3 -1 1
2 1 4
思路:利用广度优先搜索(BFS)

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int maxn=500;queue<pair<int,int> >q;//马能走到的棋盘上的坐标 bool vis[maxn][maxn];//表示是否已经访问过
int n,m,sx,sy,len[maxn][maxn];//表示马到达该坐标处的最少步数
int dis[8][2]={1,2,2,1,1,-2,2,-1,-1,2,-2,1,-1,-2,-2,-1};//马可以走的八个方向 void bfs(){q.push(make_pair(sx,sy));//入队vis[sx][sy]=1;//标记已经访问过 while(!q.empty()){    //取队首元素int x=q.front().first;int y=q.front().second; q.pop();//出队     for(int i=0;i<8;i++){//遍历可走的方向 int dx=x+dis[i][0];int dy=y+dis[i][1];if(dx>=1&&dx<=n&&dy>=1&&dy<=m&&!vis[dx][dy]){//可达点 vis[dx][dy]=1;//标记已访问过len[dx][dy]=len[x][y]+1;//距离加1q.push(make_pair(dx,dy)); //以该点起点              }}  }
}
int main(){cin>>n>>m>>sx>>sy;//输入棋盘大小,马的初始位置memset(len,-1,sizeof(len));//初始距离为-1,表示不能到达len[sx][sy]=0;//起点到起点距离为0//bfs求解马到棋盘上任意一点的最少步数 bfs(); for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){  cout<<len[i][j]<<" ";}cout<<endl;   }
}

转载于:
https://blog.csdn.net/shizheng_Li/article/details/106150385

马的遍历:有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步相关推荐

  1. 本实战将实现根据当天的总步数,计算消耗的热量值。由于行走速度不同,计算卡路里的消耗也不同,这里假设走一步消耗28卡路里。实现效果如图4所示

    本实战将实现根据当天的总步数,计算消耗的热量值.由于行走速度不同,计算卡路里的消耗也不同,这里假设走一步消耗28卡路里.实现效果如图4所示 x=int(input("请输入当天的步数:\n& ...

  2. 【计算1970年到任意一个年月距离有多久】

    日常作业系列文章目录 提示:这里记录日常初学者在各阶段的作业思路 例如:判断任意年月距离1970年1月1日有多少天 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 判断和打印图形 日 ...

  3. 【洛谷】马的遍历--广度优先搜索(BFS)

    题目描述 传送门:https://www.luogu.com.cn/problem/P1443 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意 ...

  4. 广度优先搜索(BFS)——马的遍历(洛谷 P1443)

    来看一道经典的搜索问题--马的遍历 大致题目,给定棋盘规模,以及马的初始位置,输出马到棋盘的最短距离,若不能到达则输出-1 很简单的一个搜索问题,用经典算法BFS就可以了,唯一需要注意判断的就是马有8 ...

  5. P1443 马的遍历(洛谷)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 P1443 马的遍历 * Front knowledge 一.Question 二.MY CODE P1443 马的遍历 * ...

  6. 洛谷 P1443 马的遍历(BFS)

    P1443 马的遍历 题目链接:https://www.luogu.org/problemnew/show/P1443 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一 ...

  7. 马的遍历(棋盘游戏)

    广度优先搜索(Breadth First Search, BFS)类似树的按层次遍历. 原则是:尽可能地先横向搜索:特点是:先访问的顶点其邻接点亦先被访问. ①从顶点v出发,置visited[v]=t ...

  8. 【C++】洛谷P1443 马的遍历

    马的遍历 题目描述 有一个 n × m n \times m n×m 的棋盘,在某个点 ( x , y ) (x, y) (x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步. 输入 ...

  9. 马的遍历(BFS)-洛谷

    洛谷-马的遍历 来源:https://www.luogu.com.cn/problem/P1443 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马 ...

最新文章

  1. Linux Crontab 定时任务 命令详解
  2. html追加行clone,jQuery - 使用.clone()方法克隆拷贝元素
  3. 在 Windows 10 中开启移动 WLAN 热点
  4. 微信小程序购物商城系统开发系列-工具篇
  5. 斯坦福大学2014机器学习教程中文笔记目录
  6. Python 循环列表删除元素的注意事项
  7. CasperJS基于PhantomJS抓取页面
  8. Apollo进阶课程㊲丨Apollo自动驾驶架构介绍
  9. java web判断服务器是否是本机
  10. 解决github拉项目慢的问题
  11. MySQL(8)-----truncate清空表和字段自增
  12. mysql 5.7.16 忘记root 密码 如何修改root密码
  13. Go Web编程(Go语言性能好、语法简单、开发效率高!)
  14. 用python处理DEA模型--CCR
  15. JAVA—socket编程
  16. html制作清明上河图
  17. Eclipse 专用等宽字体,Yahei_Consola字体
  18. 论文《Efficient Large-Scale Stereo Matching》学习
  19. 基于CATIA V5实现无图纸制造
  20. [Erlang 0125] Know a little Erlang opcode

热门文章

  1. 【HTML学习】表格相关(01)- 增强版
  2. RP Fiber Power 免费讲座---光纤激光器仿真设计
  3. 初来乍到,多多关照(其实不是初来了^_^,Hello CSDN,我来了)
  4. 计算机专业第五批什么意思,2019下半年高中信息技术学科教师资格证面试试题(精选)第五批...
  5. Win10中解决Prolific PL2303出现错误代码10的问题
  6. 管理信息系统【二】之 管理信息系统与组织变革
  7. 从零玩转jQuery之项目开发(QQ音乐播放器)
  8. 2015移动安全挑战赛MSC(第二届)第一题解题思路
  9. 四信5G工业智能网关加速5G全连接智慧工厂落地 抢占生产“智”高点
  10. 一代宗师杨禹廷与吴氏太极拳