【问题标题】:Finding a "trail" in 2-D dimention arrays在二维数组中寻找“轨迹”
【发布时间】:2017-02-27 08:27:27
【问题描述】:

我不知道如何弄清楚这个问题,我只是计算机科学的初学者。

输入将是二维数组 A[n][n] 个数字,表示地理表面的地形图。输入中还有一个起始位置(r,c)。引用条目 A[r][c]

如果您计划徒步旅行,您会受到相邻入口之间海拔差异的限制。一个人可以在 2 个相邻位置之间穿越,如果它们的高度相差不超过 2)。邻接仅遵循 4 个标准指南针方向,(所以我假设没有对角线)。因此,如果地图上的一个点可以从 A[r][c] 穿过任何相邻的整数序列,则认为它是可达的。

编写一个计算所有可到达位置的算法。输出将是另一个具有真/假值的二维数组 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

南和东都可以从 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

我们的教授要求我们用伪代码来实现它。我不知道如何对两个相邻点和该点的 4 个方向进行比较。任何人都可以给我一些想法?

【问题讨论】:

    标签: arrays algorithm search multidimensional-array pseudocode


    【解决方案1】:

    这只是洪水填充。您需要一个队列和一个“已访问”标志的索引可寻址向量。将根放入队列。 Whist 队列不为空,取第一个元素,并检查可到达的位置 N、S、E、W。然后检查他们是否被访问过。如果没有,将它们标记为已访问,并将它们放入队列中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 2021-06-30
      • 1970-01-01
      相关资源
      最近更新 更多