最少转弯

原创 2016年08月29日 09:42:13

【题目描述】
给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能到达目的地(x2,y2)?你只能沿着水平和垂直方向的平地上行进,拐弯次数就等于行进方向的改变(从水平到垂直或从垂直到水平)的次数。
【输入格式】
第1行:n和m
第2至n+1行:整个地图地形描述,0为空地,1为高山
第n+2行:x1、y1、x2 、y2 ,分别为起点及终点坐标
【输出格式】
最少的拐弯次数
【样例输入】
5 7
1 0 0 0 0 1 0
0 0 1 0 1 0 0
0 0 0 0 1 0 1
0 1 1 0 0 0 0
0 0 0 0 1 1 0
1 3 1 7
【样例输出】
5
【分析】
广搜,每次向一个方向走,直到不能再走。

const
  dx:array[1..4]of longint=(0,0,-1,1);
    dy:array[1..4]of longint=(1,-1,0,0);
var
  map,book:array[0..101,0..101]of longint;
    qx,qy,qs:array[0..10001]of longint;
    i,j,n,m,x1,y1,x2,y2,head,tail,x,y:longint;
begin
  read(n,m);
    for i:=1 to n do
      for j:=1 to m do
          read(map[i,j]);
    read(x1,y1,x2,y2);
    head:=1;tail:=1;
    qx[1]:=x1; qy[1]:=y1; qs[1]:=0;
    fillchar(book,sizeof(book),0);
    book[x1,y1]:=1;
    while head<=tail do begin
        for i:=1 to 4 do begin
          x:=qx[head]+dx[i]; y:=qy[head]+dy[i];
            if (x=x2)and(y=y2) then begin
              write(qs[head]);
                exit;
            end;
            while (x>=1)and(x<=n)and(y>=1)and(y<=m)and(book[x,y]=0)and(map[x,y]=0) do begin
                inc(tail);
                qx[tail]:=x; qy[tail]:=y;
                qs[tail]:=qs[head]+1;
                book[x,y]:=1;
              x:=x+dx[i]; y:=y+dy[i];
            end;
        end;
      inc(head);
    end;
end.
版权声明:本文原创,可以转载,但需附上原文链接,否则你的生命将会-1s!!!! 举报

相关文章推荐

最少转弯

【题目描述】 给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能...

【a802】最少转弯问题

给出一张地图,这张地图被分为n*m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要转几个弯才能到达目的地(x2...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

最少转弯问题

最少转弯问题 时间限制: 1 Sec  内存限制: 128 MB 题目描述 给出一张地图,这张地图被分为n×m(n,m 输入 第1行:n   ...

SSL JudgeOnline 2277——最少转弯问题

Description给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个...

【算法】图的应用--城市之间需要转的机数

【算法】图的应用--城市之间需要转的机数

【搜索】最少转弯问题(初级版)

题目描述 给出一张地图,这张地图被分为n*m(n*m 输入格式 第一行:n和m。 第二至n+1行:一个矩阵,为地图。 第n+2行:x1,y1,x2和y2。 输出格式 只有一行,为最少的转...

基础搜索题 最少转弯问题

最少转弯问题                                         ...

最少转弯问题(又是BFS,但就喜欢用矩阵)

问题 J: 最少转弯问题 题目描述 给出一张地图,这张地图被分为n×m(n,m)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少...

洛谷U1404 find

题目描述 Description 给定平面上n个OIer和n台电脑,每个OIer只能水平向右和竖直向下,找到一台电脑写代码,其花费为OIer与电脑之间的曼哈顿距离(|x_i-x_j|+|y_i-y...

少走六年弯路

这个社会是很残酷的,尤其是对于那些刚刚步入社会的80后而言。当很多人都在抱怨这个社会竞争压力太大、没有自己的追求,并因此而丧失斗志的时候,一个年薪15W的80后小本却发出了这个的感慨,“一个人的成就,...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)