军犬寻找宝物,算法求解

正方形(左下角坐标为(0,0),右上角坐标为(99,99))的格网地图上,有一只军犬要寻找一个宝物,格网上除军犬与宝物之外,还有一些障碍物。一般情况下,只要超出格网的边界,军犬的每一步最多有8个方向可供选择,如图1所示;但是必须注意,只有在A点没有障碍物时才可以选择方向1或方向2,只有在B点没有障碍物时才可以选择方向3或方向4,只有在C点没有障碍物时才可以选择方向5或方向6,只有在D点没有障碍物时才可以选择方向7或方向8。如果军犬可以从出发的位置走到宝物的位置,其总共使用的步数,理论上应有一个最小值;但是军犬有可能无法走到宝物的位置。过程中,军犬不可以走到障碍物的位置上

 

图1

以图2(1为例,有多达4个障碍物(蓝色圈和黑色圈标记的为障碍,红色叉叉标记的是军位置,实心红色圈代表宝物)介于军犬与宝物之间,但是军犬最快只要2 步就可以到达宝物的位置。图2(2中(实心黑色圈标记的为障碍,红色叉叉标记的是军位置,实心红色圈代表宝物),军犬的位置靠近角落,虽然只有 2 个障碍物,但军犬却无法到达宝物的位置。

图2

请设计算法并编写程序,军犬可以从最初位置走到宝物的位置时,请输出其使用的最少步数;如果军犬无法到达宝物的位置,请输出字符串impossible”

【输入格式

第一为一个整数n,代表障碍物的个数0 ≤ n ≤ 1000。接下n,每表示一个障碍物的坐标,其横坐标值与纵坐标值间以一个空白隔开

再下的一,表示军犬的最初位置,其横坐标值与纵坐标值间以一个空白隔开。最后一,代表宝物的位置,其横坐标值与纵坐标值间以一个空白隔开。注意:输入之障碍物、军犬、宝物皆在同位置。所有横、纵坐标值均为介于0()99()之间的整数。

【输出格式

走之规则,军犬可以从其位置走到宝物的位置时,请输出其使用之最少步如果军犬无法到达宝物的位置,请输出字符串impossible”

【输入样例

4

3 6

4 5

5 4

6 3

3 3

7 5

2

1 1

0 2

0 1

4 3

【输出样例

2

impossible

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值