输入是一个二维数组A[n][n]
,表示地理表面的地形图。每个数字代表该区域的高程。输入将是一个起始位置(r,c)
,指的是条目A[r][c]
。
如果一个人的海拔相差不超过2,则可以在两个相邻位置之间穿行。邻近只有4个标准罗盘
方向(没有对角线)。如果地图上的一个点可以从A[r][c]
到任何相邻条目序列遍历,则可以认为它是可到达的。
我必须编写一个计算网格中所有可到达位置的算法。输出将是具有true / false值的另一个2-D数组R[n][n]
。 True表示可达,false表示无法访问。
示例:假设A[10][10]
看起来像这样,用于起始位置A[0][0]
:
50 51 54 58 60 60 60 63 68 71
48 52 51 59 60 60 63 63 69 70
44 48 52 55 58 61 64 64 66 69
44 46 53 52 57 60 60 61 65 68
42 45 50 54 59 61 63 63 66 70
38 42 46 56 56 63 64 61 64 62
36 40 44 50 58 60 66 65 62 61
36 39 42 49 56 62 67 66 65 60
30 36 40 47 50 64 64 63 62 60
50 50 50 50 50 50 50 50 50 50
相应的输出数组应为:
1 1 0 0 0 0 0 1 0 0
1 1 1 0 0 0 1 1 0 0
0 0 1 0 0 0 1 1 1 0
0 0 1 1 0 0 0 0 1 0
0 0 0 1 0 0 0 0 1 0
0 0 0 1 1 0 0 0 1 1
0 0 0 0 1 1 0 0 1 1
0 0 0 0 1 1 0 0 0 1
0 0 0 0 0 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0
我不确定我是怎么做到这一点的。有人能指出我正确的方向吗?