关闭

最少转弯

标签: 编程
306人阅读 评论(0) 收藏 举报

【题目描述】
给出一张地图,这张地图被分为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.
3
0
查看评论

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

题目描述 给出一张地图,这张地图被分为n*m(n*m 输入格式 第一行:n和m。 第二至n+1行:一个矩阵,为地图。 第n+2行:x1,y1,x2和y2。 输出格式 只有一行,为最少的转弯次数。   一道简单的广搜。。不过很是做了有一点久。 一是数据坑了,自己到自己应该...
  • wu_yihao
  • wu_yihao
  • 2012-05-24 12:17
  • 1032

最少转弯问题

Problem Description 给出一张地图,这张地图被分为n*m(n,m Input 输入有多组数据,每组数据的第一行为n和m,第2至n+1行为整个地图地形描述(0:空地;1:高山),第n+2行为起点坐标x1,y1,终点坐标x2,y2。 Output 对于每组数据输出最少转弯次数...
  • u011123263
  • u011123263
  • 2014-03-08 18:13
  • 1569

BFS(广搜) 最小转弯问题

题目描述 给出一张地图,这张地图被分为 n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能到达目的地(x2,y2)?你只能沿着水平和垂直方向的平地上行进,拐弯次数就等于行进方向...
  • SSL_QYH0Ice
  • SSL_QYH0Ice
  • 2016-12-24 10:04
  • 426

bfs转弯问题

hdu1175 题目链接;http://acm.hdu.edu.cn/showproblem.php?pid=1175; 题目大意;就是转弯只能转两次;只能走0的地方;首末位置的数字要相同;这题还要注意减枝容易超时 hdu1728 题目链接;http://acm.hdu.edu.cn/sho...
  • zw1996
  • zw1996
  • 2016-08-16 20:04
  • 441

SSL JudgeOnline 2277——最少转弯问题

Description给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能到达目的地(x2,y2)?你只能沿着水平和垂直方向的平地上行进,拐弯次数就等于...
  • SSL_ZZY
  • SSL_ZZY
  • 2016-12-23 19:29
  • 730

hdu 1728 bfs 最小拐弯数

hdu 1728
  • liujc_
  • liujc_
  • 2015-03-21 15:12
  • 853

最少转弯

http://218.5.5.242:9018/JudgeOnline/problem.php?id=1434 给出一张地图,这张地图被分为n×m(n,m #include #include #include using namespace std; const int dx[]...
  • qq_30720681
  • qq_30720681
  • 2016-03-12 13:30
  • 368

【a802】最少转弯问题

Time Limit: 10 second Memory Limit: 2 MB 问题描述 给出一张地图,这张地图被分为n*m(n,m Input 第1行: n m 第1至n+1行:整个地图地形描述(0:空地;1:高山), 第2行地形描述为: 1 0 0 0 0 1 0 第3行地形描述为:...
  • harlow_cheng
  • harlow_cheng
  • 2016-07-30 14:43
  • 179

【9018p1434】最少转弯

#include #include using namespace std; int n,m,ex,ey,sx,sy; const int xx[4]={-1,0,1,0},yy[4]={0,-1,0,1}; bool map[101][101]; struct data{ int x,y,t,l...
  • ndsffx501ccy
  • ndsffx501ccy
  • 2014-03-29 14:59
  • 309

网络分析之转弯要素(Turn Features)

转弯要素图层 转弯要素是用在network Analysis中的一种限制车道左转、右转、或者回头使用的一个要素类,有了这个类我们就能对我们日常路径分析能起到更好的模拟。 新建要素类中,最常用到的就是点、线、面要素,其次应该是多点、多面体、尺寸、注记要素。但转弯要素相对很少见了。如下图: ...
  • SYDBC
  • SYDBC
  • 2014-01-03 11:38
  • 2242
    个人资料
    • 访问:239012次
    • 积分:3760
    • 等级:
    • 排名:第10189名
    • 原创:176篇
    • 转载:22篇
    • 译文:0篇
    • 评论:18条
    个人主页
    www.jrxblog.top 欢迎访问&交换友链!
    博客专栏