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

马的遍历

时间:2022-08-24 22:00:34浏览次数:63  
标签:遍历 int yy xx sx push 500

题目描述

有一个n×m 的棋盘,在某个点 (x, y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。

输入

输入只有一行四个整数,分别为 n, m, x, y。

输出

一个n×m 的矩阵,代表马到达某个点最少要走几步(不能到达则输出−1)。

样例输入
3 3 1 1
样例输出
0    3    2    
3    -1   1    
2    1    4
提示

enter image description here


bfs板子题 

 


#include<bits/stdc++.h>

using namespace std;

queue <int> x;
queue <int> y;
queue <int> s;

int dx[9]={0,-1,-2,-2,-1,1,2,2,1};
int dy[9]={0,-2,-1,1,2,2,1,-1,-2};
int mp[500][500],vis[500][500],m,n,sx,sy;

int main()
{
    cin>>m>>n>>sx>>sy;
    
    x.push(sx);//记录x坐标
    y.push(sy);//记录y坐标
    s.push(0);//记录所用步数
    
    while(!x.empty())
    {
        int tx=x.front();
        int ty=y.front();
        int ts=s.front();
        x.pop();
        y.pop();
        s.pop();
        for(int i=1;i<=8;++i)
        {
            int xx=tx+dx[i];
            int yy=ty+dy[i];
            if(xx>0&&yy>0&&xx<=m&&yy<=n&&vis[xx][yy]==0&&mp[xx][yy]==0)
       //对⑧个方向遍历 如果第一次到达就记录下步数 { x.push(xx); y.push(yy); s.push(ts+1);
         //储存新标记的的点 vis[xx][yy]=1; mp[xx][yy]=ts+1; } } } mp[sx][sy]=0; for(int i=1;i<=m;++i) { for(int j=1;j<=n;++j) { if(vis[i][j]==1) { printf("%-5d",mp[i][j]);
          //注意输出格式 } else { printf("%-5d",-1); } } cout<<endl; } return 0; }

 

标签:遍历,int,yy,xx,sx,push,500
From: https://www.cnblogs.com/XdzxBo/p/16622432.html

相关文章

  • P1443 马的遍历
    P1443马的遍历分析:根据题意,本题用bfs求解,马每次有八个方位的走向,将步数初始化为-1,这样如果没有马跳到这个地方就直接输出-1,使用队列先进先出的特点,在马每跳到一个方位后......
  • 词典遍历顺序
     funcmapKeyOrder(){ m:=map[int]struct{}{} fori:=0;i<16;i++{ m[i]=struct{}{} } fori:=0;i<16;i++{ l:=[]int{} fork:=range......
  • 洛谷 P1443 马的遍历
    题目链接:https://www.luogu.com.cn/problem/P1443试题分析:题目是一个比较经典的广搜题,首先我们要读入长,宽,和马起点的坐标,然后将其压入队尾;在队列不为空时,一直取队首并将其......
  • 马的遍历
    马的遍历思路:首先要知道马走日字,可以走8个方向.建立数组a和数组b,分别表示马一步可以走的横纵坐标的对应长度。然后从马的起始位置(队首)开始向周围扩展,并依次记录步......
  • 马的遍历
    开始把马的起点入队,当前节点为马的起点,再把马走日字的几个新节点入队,拓展新节点后就能把当前节点出队。从当前节点开始,走日字的各个节点不超过边界且未曾访问则是能入队的......
  • leetcode 热题100刷题-二叉树的中序遍历
    题题号:94题目:二叉树的中序遍历难度:简单链接:https://leetcode.cn/problems/binary-tree-inorder-traversal/2022/08/23答案算法思路  本题在课程中是学过的。  ......
  • 7-1 顺序表的建立及遍历
    7-1顺序表的建立及遍历分数30作者陈晓梅单位广东外语外贸大学读入n值及n个整数,建立顺序表并遍历输出。输入格式:读入n及n个整数输出格式:输出n个整数,以空格分......
  • JQuery_遍历_for循环、JQuery_遍历2_each方法
    JQuery_遍历_for循环2.遍历1.js的遍历方式*for(初始化值;循环结束条件;步长)2.jq的遍历方式1.jq对象.each(callback)2.$.each(object,[callback])3.for..of: ......
  • 算法---二叉树的前序遍历
    知识点树递归dfs广度优先搜索(BFS)描述给你二叉树的根节点root,返回它节点值的前序遍历。数据范围:二叉树的节点数量满足0≤n≤100 0\len\le100\0≤......
  • JMeter While循环控制器应用之遍历获取文件参数
    While循环控制器应用之遍历获取文件参数by:授客QQ:1033553122测试环境JMeter-5.4.1应用实现单线程在单次迭代内遍历获取文件参数说明:上图仅给出关键配置信息注意:......