https://www.luogu.org/problemnew/show/P1443

很经典的搜索题了,蒟蒻用广搜打的

不说了,上代码!

#include<bits/stdc++.h>
using namespace std;
struct xy {//定义结构体
int x,y;//x,y两个方向
} node,Top;
int dx[]={,-,,-,-,,-,};
int dy[]={,,-,-,,,-,-};//马走的八个方向
int a[][];
bool b[][];
int n,m;
void bfs(int x,int y,int step) {//广搜函数
a[x][y]=step;
b[x][y]=false;
queue<xy>q;//建立一个队列
node.x=x;
node.y=y;
q.push(node);//入队
while (!q.empty()){//如果队列不为空就循环
Top=q.front();//取队首元素
q.pop();//出队
for (int i=;i<;i++){
int newx=Top.x+dx[i];
int newy=Top.y+dy[i];//往八个方向遍历
if (newx<||newx>n||newy<||newy>m) continue;//判断是否越界
if (b[newx][newy]){//如果该点没有标记过
node.x=newx;
node.y=newy;//更新
q.push(node);//入队
b[newx][newy]=false;//标记
a[newx][newy]=a[Top.x][Top.y]+;//步数+1
}
}
}
}
int main() {
memset(b,true,sizeof(b));
memset(a,-,sizeof(a));//数组初始化
int x,y;
cin>>n>>m>>x>>y;//输入
bfs(x,y,);//广搜
for (int i=; i<=n; i++) {
for (int j=; j<=m; j++)
printf("%-5d", a[i][j]);//输出五位常宽
cout<<endl;//换行
}
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 马的遍历

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

  4. 洛谷 P1443 马的遍历题解

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

  5. 【洛谷P1443 马的遍历】

    题目链接(%%%jyy大佬) 题目描述 有一个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. python中文件处理--判断文件读取结束方法

    一.readline函数 按行遍历读取文件的方法,通过这个方法,readline() 每次只读取一行,通常比 .readlines() 慢得多.仅当没有足够内存可以一次读取整个文件时,才应该使用 .r ...

  2. javaMail实现收发邮件(五)

    控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类型的数据处理模块,我们只需要在把数据流传输给浏 ...

  3. 解题(DirGraCheckPath--有向图的遍历(深度搜索))

    题目描述 对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径. 给定图中的两个结点的指针DirectedGraphNode* a, DirectedGraphNode* b(请不要在意数据类 ...

  4. java打包发布程序.jar(Eclipse)

    1.程序运行无错误后,右击项目名称,选择Export 2.next后,选择启动时的运行项目,选择压缩包的存储路径 3.finishi即可. 4.运行 cmd存储路径下>java -jar XXX ...

  5. python将文本写入剪切板

    import pyperclip pyperclip.copy('The text to be copied to the clipboard.') spam = pyperclip.paste() ...

  6. Linux debug

    proc文件系统中可以查看一些正在运行的变量如device-tree sh-3.2# cat /proc/device-tree/ #address-cells fixedregulator@9/ # ...

  7. css样式之input输入框默认样式

    帮朋友写个简单的课程设计,后面会贴出来,项目刚开始就遇到一个坑(给input输入框设定样式,但是,点击后会出现蓝色边框),之前写其他的项目时也遇到过,百度一下资料解决了,现在又碰到了,写一下,留着备用 ...

  8. JavaSE基础知识(5)—面向对象(5.5 this和super关键字)

    一.this关键字 1.说明 this关键字代表当前类的对象,可以访问本类的属性.方法.构造器注意:谁调用该方法,则this就指谁 2.语法 访问属性: this.属性名 = 值; System.ou ...

  9. gooflow学习笔记

    前端jqury脚本实现流程设计,兼容目前主流浏览器 gooflow 默认属性节点只有:id,name,top,left,width,height,type (各个版本不同,属性节点有所增加),但是这些 ...

  10. UVa156

    #include <bits/stdc++.h> using namespace std; map<string,int> cnt; vector<string> ...