zoukankan      html  css  js  c++  java
  • [LUOGU]P1443 马的遍历

    题目描述

    有一个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

    基础的宽搜,最后注意输出-1的问题..

    我的思路是把除了起始点的0都换成-1

    不过memset -1也可以

    //Writer:GhostCai && His Yellow Duck
    
    #include<iostream>
    #include<cstdio> 
    #include<queue>
    #define MAXN 405
    using namespace std;
    
    struct point{
        int x, y;
    }node,r;
    
    int a[MAXN][MAXN];
    bool vis[MAXN][MAXN];
    int m,n,sx,sy;
    int mx[8]={1,2,2,1,-1,-2,-2,-1};
    int my[8]={2,1,-1,-2,-2,-1,1,2};
    
    void bfs(int x,int y){
        node.x = x;
        node.y = y;
        queue<point> Q;
        vis[x][y]=1;
        a[x][y]=0;
        Q.push(node);
        while(!Q.empty() ){
            r=Q.front();
            Q.pop() ;
            int nx,ny;
            for(int i=0;i<=7;i++){
                nx=r.x + mx[i];
                ny=r.y + my[i];
                if(nx<1||nx>m||ny<1||ny>n) continue;
                if(vis[nx][ny]) continue;
                node.x = nx;
                node.y = ny;
                Q.push(node);
                a[nx][ny]=a[r.x][r.y ] +1;
                vis[nx][ny]=1;
            }   
        }  
    }
    
    int main(){
        cin>>m>>n>>sx>>sy;
        bfs(sx,sy);
    
        int i,j;
        for(i=1;i<=m;i++){
            for(j=1;j<=n;j++){
                if(a[i][j]==0&&(i!=sx||j!=sy)) a[i][j]=-1;
                printf("%-5d",a[i][j]);
            }
            printf("\n");
        } 
    }
    

    本文来自博客园,作者:GhostCai,转载请注明原文链接:https://www.cnblogs.com/ghostcai/p/9247548.html

  • 相关阅读:
    fn project 试用之后的几个问题的解答
    fn project 扩展
    fn project 生产环境使用
    fn project 对象模型
    fn project AWS Lambda 格式 functions
    fn project 打包Function
    fn project Function files 说明
    fn project hot functions 说明
    fn project k8s 集成
    fn project 私有镜像发布
  • 原文地址:https://www.cnblogs.com/ghostcai/p/9247548.html
Copyright © 2011-2022 走看看