• 入门OJ 1281【营救(save)】


    描述

    铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快 赶到那里。 通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成 n*n 个比较小的单位,其中用 1 标明的是陆地,用 0 标明是海洋。船只能从一个格子,移到相邻的四个格子。

    题目

     为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。

    输入输出格式

    输入

    第一行为 n(n≤1000),下面是一个 n*n 的 0、1 矩阵,表示海洋地图 最后一行为四个小于 n 的整数,分别表示哥伦比亚号和铁塔尼号的位置。

    输出

    哥伦比亚号到铁塔尼号的最短距离,答案精确到整数。

    输入输出样例

     输入样例 1

    3
    001
    101
    100
    1 1 3 3 

    输出样例 1

    4
    

    解题思路

      本题只需用广搜找最短路即可。

    题解

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int dir[4][2]={1,0,0,1,-1,0,0,-1};
     4 int x1,yy,x2,y2,n;
     5 int dz[1005][1005];
     6 struct node{
     7     int x;
     8     int y;
     9     int t;
    10 };
    11 void bfs(int x,int y)
    12 {
    13     node p,t;
    14     p.x=x;
    15     p.y=y;
    16     p.t=0;
    17     queue<node> q;
    18     for(q.push(p);!q.empty();q.pop())
    19     {
    20         p=q.front();
    21         if(p.x==x2&& p.y==y2)
    22         {
    23             printf("%d
    ",p.t);
    24             break;
    25         }
    26         for(int i=0;i<4;i++)
    27         {
    28             t.x=p.x+dir[i][0];
    29             t.y=p.y+dir[i][1];
    30             if(t.x>0&&t.x<=n&&t.y>0&&t.y<=n&&!dz[t.x][t.y])
    31             {
    32                 dz[t.x][t.y]=1;
    33                 t.t=p.t+1;
    34                 q.push(t);
    35             }
    36         }
    37     }
    38 }
    39 int main()
    40 {
    41     cin>>n;
    42     for(int i=1;i<=n;i++)
    43     {
    44         for(int j=1;j<=n;j++)
    45         {    char c;
    46             cin>>c;
    47             dz[i][j]=c-'0';
    48         }    
    49     }
    50     scanf("%d%d%d%d",&x1,&yy,&x2,&y2);
    51     dz[x1][yy]=1;
    52     if(x1==x2&&yy==y2)
    53         cout<<0;
    54     else
    55         bfs(x1,yy);
    56     return 0;
    57 }
  • 相关阅读:
    面试题11:旋转数组的最小数字(C++)
    2019.9.20学习内容及随堂笔记
    2019.9.19学习内容及小结
    2019.9.18(day39)学习内容及小结
    2019.9.17学习内容及随堂笔记
    2019.9.16学习内容及随堂笔记
    2019.9.12(day36)学习内容及笔记
    2019.9.11学习内容及随堂笔记
    2019.9.10学习内容及随堂笔记
    2019.9.9学习内容及随堂笔记
  • 原文地址:https://www.cnblogs.com/hualian/p/11159187.html
Copyright © 2020-2023  润新知