题目链接(%%%jyy大佬)

题目描述

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

输入输出格式

输入格式:

一行四个数据,棋盘的大小和马的坐标

输出格式:

一个n*m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)

输入输出样例

输入样例#1: 复制

3 3 1 1
输出样例#1: 复制

0    3    2
3 -1 1
2 1 4 主要是BFS的思想(毕竟是BFS经典题QwQ)
我们直接通过注释来理解叭
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct node//我们不妨先设一个结构体
{
int x,y,step;//设坐标以及步数
node(int x,int y,int step):x(x),y(y),step(step){};//构造函数,可以进行赋值操作
};
queue<node> q;
int sx,sy;//当前的步数
int mx[]={,-,-,,,,,-,-};//横坐标的移动
int my[]={,-,-,-,-,,,,};//纵坐标的移动
int st[][];//该点走到需要花费的步数
bool check(int x,int y)//判断是否出界
{
return ((<=x&&x<=n)&&(<=y&&y<=m));
}
bool used[][];
void bfs()//笨法师
{
used[sx][sy]=;//标记已经走过
q.push(node(sx,sy,));//入队
st[sx][sy]=;//初始化
while(!q.empty())//队列非空 (直至非空)
{
node u=q.front();//取队首
q.pop();//出队
for(int i=;i<=;i++)//各种情况进行遍历
{
int nx=u.x+mx[i];//下一步 (横坐标)
int ny=u.y+my[i];//下一步 (纵坐标)
if(check(nx,ny)&&!used[nx][ny])//判断这个点是否在界内并且是否被走过
{
used[nx][ny]=;//标记走过
st[nx][ny]=u.step+;//step(步数)+1
q.push(node(nx,ny,u.step+));//继续入队
}
}
}
}
int main()
{
scanf("%d%d%d%d",&n,&m,&sx,&sy);//日常输入
bfs();//进行广搜操作
for(int i=;i<=n;i++)//print操作
{
for(int j=;j<=m;j++)
{
if(!used[i][j])
printf("%-5d",-);//控制位数,输出无解
else
printf("%-5d",st[i][j]);//控制位数
}
puts("");//换行
}
return ;
}

【洛谷P1443 马的遍历】的更多相关文章

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

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

  2. 洛谷 P1443 马的遍历

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

  3. 洛谷P1443 马的遍历

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

  4. 洛谷 P1443 马的遍历

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

  5. 洛谷 P1443 马的遍历题解

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

  6. 洛谷P1443马的遍历

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

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

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

  8. 洛谷P1443 马的遍历【BFS】

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

  9. 洛谷——P1443 马的遍历

    https://www.luogu.org/problem/show?pid=1443#sub 题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达 ...

随机推荐

  1. OI那些事——AFO

    \(OI\)那些事--\(AFO\) 世界上从此少了一个\(Oier\)也不会有人知道,也许只有某个人在某年某月某日翻到了Eternal 风度的博客才会发现:哇,这哥们怎么\(Noip\)就退役了 两 ...

  2. vscode 将本地项目上传到码云

    **************************************************************************************************** ...

  3. PAT Advanced 1058 A+B in Hogwarts (20 分)

    If you are a fan of Harry Potter, you would know the world of magic has its own currency system -- a ...

  4. 2019 蓝桥杯国赛 B 组模拟赛 E 蒜头图 (并查集判环)

    思路: 我们看条件,发现满足条件的子图无非就是一些环构成的图, 因为只有形成环,才满足边的两个点都在子图中,并且子图中节点的度是大于0的偶数. 那么如果当前有k个环,我们可以选2^k-1个子图,为什么 ...

  5. zookeeper之四 Curator客户端的使用

    Curator是一个开源的zookeeper客户端,解决了很多zookeeper原生客户端非常底层的细节开发工作,如连接重试.反复注册watcher等. public class CuratorOpe ...

  6. MySQL--全文索引作用、原理及使用注意

    作用 MySQL索引可以分为:主键索引.普通索引.唯一索引.全文索引.其中,全文索引应该是是比较特殊的,它只有少数的几个存储引擎支持,且只有类型为char.vchar.text的列能建立全文索引.以前 ...

  7. php sockets扩展安装

    php sockets扩展安装   今天安装cacti发现需要php sockets扩展,而现在的lnmp没有安装,于是想到了phpzie工具安装扩展,安装方法如下: cd php-5.3.8/ext ...

  8. 模型监控指标- 混淆矩阵、ROC曲线,AUC值,KS曲线以及KS值、PSI值,Lift图,Gain图,KT值,迁移矩阵

    1. 混淆矩阵 确定截断点后,评价学习器性能 假设训练之初以及预测后,一个样本是正例还是反例是已经确定的,这个时候,样本应该有两个类别值,一个是真实的0/1,一个是预测的0/1 TP(实际为正预测为正 ...

  9. ubuntu16.04 安装samba

    安装samba 1.更新当前软件 sudo apt-get upgrade sudo apt-get update sudo apt-get dist-upgrade 2.执行 sudo apt-ge ...

  10. unittest----skip(跳过用例)

    我们在执行测试用例时,有时有些用例时不需要执行的,这时就需要用到unittest给我们提供的跳过用例的方法 @unittest.skip(reason):强制跳过,不需要判断条件.reason是跳过原 ...