首页 > 其他分享 >马的遍历.

马的遍历.

时间:2022-12-27 13:01:26浏览次数:31  
标签:遍历 cout temp int 405 num que


题目描述
​ 有一个 n 行 m 列的棋盘( 1<n,m≤400 ),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。

输入
​ 一行四个整数,分别表示棋盘大小 n,m 和马的位置 x,y。

输出
​ 一个 n∗m​ 的矩阵,代表马到达某个点最少要走几步,每两个数之间用空格隔开,若此点不可达则输出 −1​。

样例输入
3 3 1 1
样例输出
0 3 2
3 -1 1
2 1 4
数据规模与约定
​ 时间限制:1 s

内存限制:256 M

100% 的数据保证 1<n,m≤400

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;

struct node {
int x, y, cnt;
};
int dir[8][2] = { 1,2,2,1,1,-2,-2,1,-1,2,2,-1,-1,-2,-2,-1};
int main() {
int n, m, x, y;
cin >> n >> m >> x >> y;
int num[405][405];
memset(num, -1, sizeof(int) * 405 * 405);
queue<node> que;
que.push({ x,y,0 });
num[x][y] = 0;
while (!que.empty()) {
node temp = que.front();
que.pop();
for (int i = 0; i < 8; i++) {
int x = temp.x + dir[i][0];
int y = temp.y + dir[i][1];
if (x <= 0 || y <= 0 || x > n || y > m) {
continue;
}
if (num[x][y] == -1) {
que.push({ x,y,temp.cnt + 1 });
num[x][y] = temp.cnt + 1;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (j != 1) cout << " ";
cout << num[i][j];
}
cout << endl;
}
return 0;
}


标签:遍历,cout,temp,int,405,num,que
From: https://blog.51cto.com/u_15923796/5972680

相关文章

  • 无脑带你遍历用户生命价值与流失挽救(上) : 流量下的价值套路
    这是一篇讲述用户生命周期与流失挽救方面知识的文章,穿插了大量的从BI角度对业务进行数据分析的方法。相关知识的宽度与深度有点高,涉及到的知识点有:用户生命周期、流量方向的......
  • 无脑带你遍历用户生命价值与流失挽救(上) : 流量下的价值套路
    这是一篇讲述用户生命周期与流失挽救方面知识的文章,穿插了大量的从BI角度对业务进行数据分析的方法。相关知识的宽度与深度有点高,涉及到的知识点有:用户生命周期、流量方向的......
  • QT案例词典 -- 存储内容及遍历
    遗憾的是,两个人不能在一起,却偏偏相遇。。。---- 网易云热评一、字典内容就三个词a:第一个字母b:第二个字母C:第三个字母#defineMAX3 二、定义一个词的机构体structdict{......
  • 遍历dom节点
    functionselectOnchang(obj){varselectedValue=obj.selectedIndexif(selectedValue==0){obj.parentNode.nextSibl......
  • 几种数组遍历
    for(vari=0;i<arr.length;i++)普通遍历for(vari=0;long=arr.length,i<long;i++),这是使用临时变量将数组长度缓存,当数组长度较大时,这种遍历跟普通遍历才会有些明......
  • BFS场景样例测试--层次遍历--用Java实现
    我们今天研究下层次便利用BFS来实现 首先确定数据结构/***二叉树数据结构节点*/publicclassTreeNode{intvalue;TreeNodeleft;TreeNoderi......
  • 有用的DOM遍历方法,你需要了解一下
    英文| https://levelup.gitconnected.com/useful-dom-traversal-methods-d2b55cf8e25c翻译|web前端开发(ID:web_qdkf)客户端JavaScript的主要用途是动态地处理网页。我们......
  • Go 快速入门指南 - range 遍历
    概述Go特有的一种的遍历结构。它可以遍历任何一个 ​​集合(字符串、数组、切片、Map、通道等)​​​。语法上类似主流编程语言中的 ​​foreach​​ 语句,但可以获得每次......
  • Go 快速入门指南 - 遍历通道
    概述建议先阅读 range, 阻塞通道, 非阻塞通道 等小节。​​range​​ 除了可以遍历字符串、切片、数组等数据结构外,还可以遍历通道。语法规则和遍历其他数据结构不同,遍......
  • 探究map为什么不能遍历的同时进行增删操作
    持续创作,加速成长!这是我参与「掘金日新计划·6月更文挑战」的第14天,点击查看活动详情前段时间,同事在代码中KW扫描的时候出现这样一条:上面出现这样的原因是在使用fore......