1330:【例8.3】最少步数

s数组:记录(1,1)到达每一点需要的最少步数

s[1][1]自然为 0,其余初始化为 -1

que数组:que[#][1] 表示(1,1)可到达点的 x 坐标

que[#][2] 表示(1,1)可到达点的 y 坐标

que[#][3] 表示(1,1)可到达点的 最少步数

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdlib>
using namespace std; int dx[]={-,-,-,,,,,,,-,-,-},
dy[]={-,-,-,-,-,-,,,,,,}; int main()
{
int s[][],que[][]={},x1,y1,x2,y2;
memset(s,0xff,sizeof(s)); //s数组初始化
int head=,tail=; //初始位置入队
que[][]=;que[][]=;que[][]=;
cin>>x1>>y1>>x2>>y2;
while(head<=tail)
{
for(int d=;d<=;d++) //拓展十二个方向
{
int x=que[head][]+dx[d];
int y=que[head][]+dy[d];
if(x>&&y>) //保证不出界
if(s[x][y]==-) //未走过
{
s[x][y]=que[head][]+;
tail++;
que[tail][]=x;
que[tail][]=y;
que[tail][]=s[x][y];
if(s[x1][y1]>&&s[x2][y2]>)
{
cout<<s[x1][y1]<<endl;
cout<<s[x2][y2]<<endl;
return ;
}
}
} head++; } }

以上我方代码已修改

没修改前:

(如果你发现)

原因是:

(去掉“pause”之后就。。就。。可以了)

P1443 马的遍历

题解

BFS队列实现,和上面那个题本质是一样的

注意判断行走的是有效区域!!!

代码

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstdlib> using namespace std; inline int read()
{
int ans=;
char last=' ',ch=getchar();
while(ch<''&&ch>'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=ans*+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} int n,m,sx,sy;
int pan[][];
struct node
{
int x,y,step;
};
queue<node> q;
int dx[]={-,-,-,-,,,,};
int dy[]={-,,-,,-,,-,}; int main()
{
n=read();m=read();sx=read();sy=read();
memset(pan,-,sizeof(pan));
pan[sx][sy]=;
q.push((node){sx,sy,});
while(!q.empty())
{
node now=q.front();
q.pop();
for(int i=;i<;i++)
{
int xx=now.x +dx[i];
int yy=now.y +dy[i];
if(pan[xx][yy]==-&&xx>=&&xx<=n&&yy>=&&yy<=m)
{
pan[xx][yy]=now.step +;
q.push((node){xx,yy,pan[xx][yy]}) ;
}
}
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
printf("%-5d",pan[i][j]);
printf("\n");
}
return ;
}

(但是之前我试过注释掉它 ybt 瓦特掉了所以显示一个点运行错误。。)

ybt就是欺负我这个lao shi ren

最少步数&P1443 马的遍历的更多相关文章

  1. 洛谷 P1443 马的遍历

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

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

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

  3. 集训作业 洛谷P1443 马的遍历

    这个题是个搜索,而且有是最少的步数,肯定就是广搜啦,不知道为什么的同学先去学习一下广搜吧. 养成好习惯,看见最少步数就去想想广搜(只是我自己觉得) 竟然这个题可以如此顺畅的想到广搜,感觉不难啊,但还有 ...

  4. 【洛谷】P1443 马的遍历

    题目:https://www.luogu.org/problemnew/show/P1443 简单的BFS模板题——因为我写出来了. 分析过程: n*m矩阵,用二维数组 数据不大,二维数组稳了 先把二 ...

  5. 洛谷P1443 马的遍历

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

  6. 洛谷 P1443 马的遍历题解

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

  7. 【洛谷P1443 马的遍历】

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

  8. 洛谷 P1443 马的遍历

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

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

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

随机推荐

  1. 【漏洞分析】Discuz! X系列全版本后台SQL注入漏洞

    0x01漏洞描述 Discuz!X全版本存在SQL注入漏洞.漏洞产生的原因是source\admincp\admincp_setting.php在处理$settingnew['uc']['appid' ...

  2. Easy UI combobox实现类似 Select2的效果,下拉带搜索框

    一直在开发一个新系统,其中用Easy UI作为前端框架,少不了用 combobox做为一个 下拉控件,它支持 可编辑 模糊本地数据过滤,也可支持 不可编辑 下拉 选择的功能: $('#ID' ).co ...

  3. Java学习笔记【十一、序列化】

    序列化的条件 实现Serializable接口 所有属性必须是可序列化的,或标记为transient(不做序列化) 序列化-将对象输出为序列化文件 ObjectOutputStream 反序列化-将序 ...

  4. UDS报文解读

    UDS(Unified Diagnostic Services,统一的诊断服务)诊断协议是ISO 15765 和ISO 14229 定义的一种汽车通用诊断协议,位于OSI模型中的应用层,它可在不同的汽 ...

  5. struts2使用注解的时候遇到的问题

    问题描述:     一切配置和注解都正确,但是无法访问action中的方法   解决问题:     之前将action层的包名命名成了web,改成action就对了   原因:     struts2 ...

  6. socket 测试工具java

    SocketTest.jar http://sockettest.sourceforge.net/

  7. LabVIEW中的波形图表(Chart)与波形图(Graph)

    在百度上随便找的一个简单的例子: 具体链接:https://jingyan.baidu.com/article/5552ef47deb996518ffbc983.html 波形图表最先出现数据,等待所 ...

  8. IO框架:asyncio 上篇

    如何定义/创建协程 只要在一个函数前面加上 async 关键字,这个函数对象是一个协程,通过isinstance函数,它确实是Coroutine类型. from collections.abc imp ...

  9. UVa101 The Blocks Problem(不定长数组vector)

    The Blocks Problem 书上的一道例题,代码思路比较清晰,可以看懂. 相关知识: 若a是一个vector,则: a.size():读取它的大小 a.resize():改变大小 a.pus ...

  10. React全家桶构建一款Web音乐App实战(六):排行榜及歌曲本地持久化

    上一节使用Redux管理歌曲相关数据,实现核心播放功能,播放功能是本项目最复杂的一个功能,涉及各个组件之间的数据交互,播放逻辑控制.这一节继续开发排行榜列表和排行榜详情,以及把播放歌曲和播放歌曲列表的 ...