当前位置: 首页 > news >正文

【蓝桥杯】马的遍历

马的遍历

题目描述

有一个 n × m n \times m n×m 的棋盘,在某个点 ( x , y ) (x, y) (x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。

输入格式

输入只有一行四个整数,分别为 n , m , x , y n, m, x, y n,m,x,y

输出格式

一个 n × m n \times m n×m 的矩阵,代表马到达某个点最少要走几步(不能到达则输出 − 1 -1 1)。

样例 #1

样例输入 #1

3 3 1 1

样例输出 #1

0    3    2    
3    -1   1    
2    1    4

提示

数据规模与约定

对于全部的测试点,保证 1 ≤ x ≤ n ≤ 400 1 \leq x \leq n \leq 400 1xn400 1 ≤ y ≤ m ≤ 400 1 \leq y \leq m \leq 400 1ym400

AC代码:

#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
const int N = 510;
int ans[N][N],n,m,x,y;
const int dx[8] = { -1,-2,-2,-1,1,2,2,1 };
const int dy[8] = { 2,1,-1,-2,2,1,-1,-2 };
typedef pair<int, int>PII;//开一个可以存两个int的变量,用于存坐标(x,y)
queue<PII> q;void bfs()
{//队列非空while (!q.empty()){auto now = q.front();//记录下当前队列首元素q.pop();//将队列的首元素弹出int d = ans[now.first][now.second];for (int i = 0; i < 8; i++){int ax = now.first + dx[i];int ay = now.second + dy[i];//如果跨过边界了或者当前位置访问过了,就直接continue不管if (ax<1 || ax>n || ay<1 || ay>m || ans[ax][ay] != -1)continue;ans[ax][ay] = d + 1;//在上一次的距离加上1q.push({ ax,ay });//继续入队列}}for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){printf("%-5d", ans[i][j]);}puts("");}
}int main(void)
{cin >> n >> m >> x >> y;memset(ans, -1,sizeof ans);//没有访问就标记为-1ans[x][y] = 0;//从[x,y]走的,当前格子步数就是0q.push({ x,y });//将[x,y]坐标加入到队列当中bfs();return 0;
}
http://www.lryc.cn/news/253793.html

相关文章:

  • 导入JSON到xmind
  • DataGrip 2023.2.3(IDE数据库开发)
  • 身为 Go 程序员,我为啥更喜欢用 Zig?
  • Amazon CodeWhisperer 使用体验
  • 公众号留言功能怎么申请?
  • 探索三种生成模型:基于DDPMs、NCSNs和SDEs方法的Diffusion
  • Linux随记(七)
  • RESTful API,以及如何使用它构建 web 应用程序。
  • 【华为OD题库-075】拼接URL-Java
  • 【Unity动画】为一个动画片段添加事件Events
  • CoDeF视频处理——视频风格转化部署使用与源码解析
  • ubuntu server 20.04 备份和恢复 系统 LTS
  • NFC对物联网开发的影响及用途
  • 企业级SQL开发:如何审核发布到生产环境的SQL性能
  • linux 手动安装移植 haveged,解决随机数初始化慢的问题
  • 如何使用llm 制作多模态
  • k8s(二):Pod
  • Python 字典详解(dict)
  • IPoIB在国产并行系统上的实现与优化
  • 东南大学与OpenHarmony携手共建开源生态,技术俱乐部揭牌成立并迎来TSC专家进校园
  • NPU、CPU、GPU算力及算力计算方式
  • 华清远见嵌入式学习——C++——作业6
  • k8s安装学习环境
  • RepidJson将内容写入文件简单代码示例
  • golang构建docker镜像的几种方式
  • golang使用sip协议 用户名和密码注册到vos3000
  • 第4章 互联网
  • 【JavaWeb】前端工程化(VUE3)
  • JAVA基础知识:异常处理
  • PostGIS学习教程十:空间索引