POJ 3009 Curling 2.0 已被翻译

来源:互联网 发布:软件检测机构行业 编辑:程序博客网 时间:2024/05/16 03:55

描述


在MM-21行星上,今年的奥运会后,卷曲越来越受欢迎。但规则有点不同于我们。游戏在冰上游戏板上进行,其上标记有方形网格。他们只使用一块石头。游戏的目的是以最小的移动次数将石头从开始引导到目标。

图。图1示出了游戏板的示例。一些正方形可能被块占据。有两个特殊的方块,即开始和目标,没有被块占据。(这两个方块是不同的。)一旦石头开始移动,它将继续,直到它击中一个块。为了使石头到达目标,你可能必须停止石头打它对一个块,并再次投掷。

石头的运动遵循以下规则:
•开始时,石头停留在开始广场。
•石头的运动仅限于x和y方向。禁止对角线移动。
•当石头静止时,你可以通过扔它移动。你可以把它扔到任何方向,除非它立即被阻止(图2(a))。
•一旦抛出,石头继续向相同的方向移动,直到发生下列情况之一:◦石头击中一个块(图2(b),(c))。◾石头停在它击中的街区旁边的广场。
◾块消失。

◦石头从板子上脱落。 ◾游戏结束失败。

◦石头到达目标广场。 ◾石头停在那里,游戏结束成功。


•你不能在游戏中掷石头超过10次。如果石头在10个移动中没有达到目标,游戏结束失败。

根据规则,我们想知道开始时的石头是否可以达到目标,如果是的话,需要的最小移动数量。

利用图1所示的初始配置。 1,需要4次移动才能使石头从开始到目标。路线如图2所示。图3(a)。注意当石头到达目标时,板的配置已经改变,如图所示。3(b)。

输入


输入是一系列数据集。输入的结束由包含由空格分隔的两个零的线表示。数据集的数量从不超过100。

每个数据集的格式如下。


板的宽度(= w)和高度(= h)
板的第一行
... ...
第h行的板

板的宽度和高度满足:2≤w≤20,1≤h≤20。

每行由以空格分隔的w个十进制数字组成。该数字描述了相应正方形的状态。


0空方
1块
2开始位置
3目标位置

数据集。 D-1如下:


6 6
1 0 0 2 1 0
1 1 0 0 0 0
0 0 0 0 0 3
0 0 0 0 0 0
1 0 0 0 0 1
0 1 1 1 1 1

输出


对于每个数据集,打印一个具有十进制整数的行,指示从开始到目标的路线上的最小移动数。如果没有这样的路由,请打印-1。每行不应该有除此数字之外的任何字符。


已知起点和终点,求石子从起点到达终点的最短路,如果无法到达,则输出-1。



0 0