(程序设计方法与实践)进圈

进圈

Description

龙龙最近迷上了一款名叫 PUBG(PLAYERUNKNOWN’S BATTLEGROUNDS)的手游,那是一款关乎生存挑战的 RPG 逃亡游戏。

考虑到游戏的环节过于复杂,龙龙决定简化一下场景:整个地图可以看做一个长为 n 宽为 m 的二维格点平面。龙龙需要从(x1,y1)逃亡到(x2,y2)以逃离毒圈,但有些格点上存在障碍#不能行走,有些格点是沙地.。龙龙只能移动在允许行走的沙地上,同时每一时刻,龙龙只能朝着当前位置周围的上、下、左、右四个方向移动。同时因为龙龙使用了能量饮料,每分钟最多可以朝着一个方向行走 k 步

毒圈快要来啦,请你帮龙龙尽快安排一下可行的路线,使得它能够以最短的时间顺利进圈。

Input

第一行输入三个正整数 n,m 和 k(1 ≤ n,m,k ≤ 1000)表示地图的大小还有龙龙每分钟最多可以移动的步数;

接下来 n 行,每行包含 m 个字符,其中第 i 行第 j 个字符表示坐标(i,j)的路况,它可能是#,这表示这个格点是障碍区,不能行走,也可能是.表示沙地;

最后一行输入四个正整数 x1,y1,x2,y2 由空格间隔开,表示龙龙的初始位置和目标位置。

Output

请输出一个正整数 t,表示龙龙从(x1,y1)到(x2,y2)进圈最少需要的时间(分钟),如果龙龙最终不能进圈,则请输出-1。

Hint

对于样例,龙龙第一分钟走 4 步,从(1,3)到(1,1),第二分钟从(1,1)到(3,1),第三分钟从(3,1)走到(3,3)顺利进圈。

在这里插入图片描述

代码如下:

#include <cstdio>  
#include <cstring>  
#include <queue>   
#include <algorithm>  
using namespace std;  
const int num=1000+50;  
const int zy[]={
   0,0,1,-1}; //表示左右   
const int sx[]={
   </
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值