您是旧金山的出租车司机。正如出租车司机的典型做法一样,您正在浏览一个网格,在该网格中,您只能移动的有效方向是左,右,上和下。但是,圣弗朗西斯科(San Fransisco)非常丘陵,因此两个相邻交叉路口之间的距离不一定相同。更具体地,在海拔处的交叉点与在海拔处a
的相邻交叉点之间的距离b
将是1 + |a - b|
。您的目标是找到从地图左上角的起点到右下角的目的地的所有最短路径。
输入值
整数高度的二维网格,采用最方便的格式(二维数组,具有宽度和/或高度的一维数组等)。
输出量
方向行进的顺序以给定的距离,高度的两个相邻交叉点之间的距离留在最短的距离可能顶部的输入的右下角到达a
和b
由下式给定1 + |a - b|
。如果有多个解决方案,请输出所有解决方案。
虽然我使用U
,D
,L
,和R
为上,下,左,右在你的程序可以使用任何四个不同的字符串来表示的方向上,只要它是与他们一致,并在所有输入下面的例子。
例子
Input:
0 3 0 0 0
0 2 0 2 0
0 0 0 3 0
Output:
D D R R U U R R D D
Input:
3
Output:
<empty>
Input:
11 11 11
11 11 11
11 11 11
Output:
R R D D
R D R D
R D D R
D R R D
D R D R
D D R R
Input:
7 8 1 -1 0
4 4 6 -1 7
3 4 4 2 8
2 5 2 -1 2
Output:
D R D R R D R
D R D R D R R
这是代码高尔夫球,因此字节数最少的答案会获胜。
1
海拔高度始终小于10吗?(它们在示例中,但会一直存在吗?)
—
Dada
@Dada的高度不一定小于10(它们也可以为负),我相应地更新了示例。
—
0'
当我看到这个帖子很活跃时,我对suuuuuuper感到兴奋-我以为有人在出租车上张贴了答案!也许有一天
—
太空垃圾