zoukankan      html  css  js  c++  java
  • 洛谷 P1443 马的遍历 BFS

    P1443 马的遍历

    时间限制1.00s
    内存限制125.00MB

    题目描述

    有一个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 #include<stdio.h>
     2 #include<string.h>
     3 int n,m,sx,sy,map[410][410],h[3][233333],ti[233333],u[9]={0,-2,-1,1,2,2,1,-1,-2},w[9]={0,1,2,2,1,-1,-2,-2,-1},p=-1;
     4 bool tap[410][410];
     5 int search();
     6 int main(){
     7     scanf("%d %d %d %d",&n,&m,&sx,&sy);
     8     search();
     9     for(int i=1;i<=n;i++){
    10         for(int j=1;j<=m;j++)
    11            if(!tap[i][j]) printf("%-5d",p);
    12            else printf("%-5d",map[i][j]);
    13         printf("
    ");
    14     }
    15     return 0;
    16 }
    17 int search(){
    18     memset(map,0,sizeof(map));
    19     memset(tap,0,sizeof(tap));
    20     memset(ti,0,sizeof(ti));
    21     memset(h,0,sizeof(h));
    22     int head=0,tail=1,x,y;
    23     h[1][tail]=sx;h[2][tail]=sy;tap[sx][sy]=1;
    24     do{
    25         head++;
    26         for(int i=1;i<=8;i++){
    27             x=h[1][head]+u[i];
    28             y=h[2][head]+w[i];
    29             if(x>0&&y>0&&x<=n&&y<=m&&(!tap[x][y])){
    30                 //printf("te:%d %d %d %d
    ",x,y,i,head); 
    31                 tap[x][y]=1;
    32                 tail++;
    33                 h[1][tail]=x;
    34                 h[2][tail]=y;
    35                 ti[tail]=ti[head]+1;
    36                 map[x][y]=ti[tail];
    37             }
    38         }
    39     }while(head<tail);
    40 }
    BFS
  • 相关阅读:
    阿蒂亚谈数学——我对《数学的统一性》的笔记
    陶哲轩实分析习题8.5.6
    陶哲轩实分析习题8.5.2
    陶哲轩实分析习题8.5.9
    陶哲轩实分析习题8.5.5
    陶哲轩实分析习题8.5.6
    陶哲轩实分析习题8.5.2
    陶哲轩实分析习题8.5.1
    陶哲轩实分析习题8.5.9
    陶哲轩实分析习题8.5.5
  • 原文地址:https://www.cnblogs.com/lpl-bys/p/11522625.html
Copyright © 2011-2022 走看看