P1443

所属知识点:BFS

传送门

题意 :

给你一个矩阵和一匹马一开始的位置.然后问你在这个矩阵里边跳到每一个点需要多少步.

思路:

因为一匹马从一个点可以跳到的位置如下图:



画的不好请见谅...

我们就可以开始进行bfs了,最好的板子题.

然后最后输出的时候因为要留5个长宽.

可以这样搞:

			cout << setw(5) << std::left << maze[i][j];

code:

#include <bits/stdc++.h>
#include <queue>
#define N 100010
#define M 1010
#define _ 0 using namespace std;
struct node {
int x, y, bushu;
};
int m, n, x, y;
int u[8]= {1, 2, 2, 1, -1, -2, -2, -1};
int v[8]= {-2, -1, 1, 2, 2, 1, -1, -2};
int maze[401][401];
queue<node> q; int read() {
int s = 0, f = 0; char ch = getchar();
while (!isdigit(ch)) f |= (ch == '-'), ch = getchar();
while (isdigit(ch)) s = s * 10 + (ch ^ 48), ch = getchar();
return f ? -s : s;
} void bfs(int r, int t) {
memset(maze, -1, sizeof(maze));
maze[r][t] = 0;
q.push((node) {r, t, 0});
while (!q.empty()) {
node a = q.front();
q.pop();
for (int i = 0; i <= 7; i++) {
int fx = a.x + u[i];
int fy = a.y + v[i];
if (fx >= 1 && fx <= n && fy >= 1 && fy <= m && maze[fx][fy] == -1) {
maze[fx][fy] = a.bushu + 1;
q.push((node) {fx, fy, a.bushu + 1});
}
}
}
} int main() {
n = read(), m = read(), x = read(), y = read();
bfs(x, y);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++)
cout << setw(5) << std::left << maze[i][j];
puts("");
}
return 0^_^0;
}

洛谷 P1443的更多相关文章

  1. 【bfs】洛谷 P1443 马的遍历

    题目:P1443 马的遍历 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 记录一下第一道ac的bfs,原理是利用队列queue记录下一层的所有点,然后一层一层遍历: 其中: 1.p ...

  2. 洛谷 P1443 马的遍历

    终于遇到一个简单纯粹一点的bfs了...... 题目链接:https://www.luogu.org/problemnew/show/P1443 题目是求到达一个点的最短步数 也就是说我只要bfs遍历 ...

  3. 洛谷P1443 马的遍历

    https://www.luogu.org/problemnew/show/P1443 很经典的搜索题了,蒟蒻用广搜打的 不说了,上代码! #include<bits/stdc++.h> ...

  4. 洛谷 P1443 马的遍历

    P1443 马的遍历 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘 ...

  5. 洛谷 P1443 马的遍历题解

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

  6. 马的遍历 洛谷 p1443

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

  7. 洛谷P1443马的遍历

    传送 这是个广搜,思路和普通的迷宫题差不多,但我卡了3遍,为什么呢? 因为输出格式 题目要求左对齐,宽度为5输出,在此说一下如何控制宽度. 下面的m都为要求的宽度 int 类型: printf: %m ...

  8. 洛谷P1443 马的遍历(bfs,注意输出格式)

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

  9. 洛谷 - P1443 - 马的遍历 - bfs

    略有收获的bfs,使用了try_enqueue函数使得加入队列非常方便.性能理论上是一样的因为是inline? 还有就是左对齐是使用%-4d,相对于右对齐的%4d,还有右对齐前导零的%04d,自己试一 ...

随机推荐

  1. 【记录】【idea】【mysql】Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.解决问题

    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property ...

  2. 使用velero进行kubernetes灾备

    使用velero可以对集群进行备份和恢复,降低集群DR造成的影响.velero的基本原理就是将集群的数据备份到对象存储中,在恢复的时候将数据从对象存储中拉取下来.可以从官方文档查看可接收的对象存储,本 ...

  3. go-gin-api 规划目录和参数验证(二)

    概述 首先同步下项目概况: 上篇文章分享了,使用 go modules 初始化项目,这篇文章咱们分享: 规划目录结构 模型绑定和验证 自定义验证器 制定 API 返回结构 废话不多说,咱们开始吧. 规 ...

  4. 优先队列 + 模拟 - HDU 5437 Alisha’s Party

    Alisha’s Party Problem's Link Mean: Alisha过生日,有k个朋友来参加聚会,由于空间有限,Alisha每次开门只能让p个人进来,而且带的礼物价值越高就越先进入. ...

  5. centos7.x下环境搭建(五)—nginx搭建https服务

    https证书获取 十大免费SSL证书 https://blog.csdn.net/ithomer/article/details/78075006 如果我们用的是阿里云或腾讯云,他们都提供了免费版的 ...

  6. CTS,CLS,CLR解释

    问题阐述 CTS.CLS和 CLR分别是什么意思? 专家解答 CTS.CLS和 CLR是.NET框架的 3个核心部分,下面分别对它们进行介绍. (1)CTS CTS即通用类型系统,它定义了如何在.NE ...

  7. windows 2012 IIS 部署 .net core HTTP Error 502.5 - Process Failure 错误解决办法

    安装系统补丁: 2012 R2对应>Windows8.1-KB2999226-x64.msu 下载地址: https://www.microsoft.com/zh-CN/download/det ...

  8. mybatis中集成sharing-jdbc采坑

    1. mybatis中集成sharing-jdbc采坑 1.1. 错误信息 Caused by: org.apache.ibatis.binding.BindingException: Invalid ...

  9. APS系统如何落地?用户实际痛点解析!

    APS软件在中国的发展,在很长的时间内处于非常尴尬的状态:大企业都了解APS很重要,但只有非常少的企业肯真正实施APS软件,处于叫好不叫座的状态.直到工业4.0概念流行后,APS才逐渐被国内企业所认可 ...

  10. ASM磁盘操作笔记

    添加磁盘组 create diskgroup abc normal redundancy failgroup a disk 'ORCL:AAA' name AAA failgroup b disk ' ...