检查看到最远

时间:2017-05-10 19:58:13

标签: algorithm assembly

我正在尝试在装配中编写一个带有x和y坐标的程序,x将充当建筑物的位置,y将充当其高度。 现在我应该检查看得最远的建筑物。

例如:

enter image description here

正如您在示例中所看到的,位置8处的建筑物看到4米,而位置7处的建筑物看到2米,而位置9处的建筑物看到距离最远的9米,所以我只需做现在是9见9米的印刷品和最远的距离。 我似乎无法弄清楚这样做的算法。

1 个答案:

答案 0 :(得分:2)

追踪迄今为止最大高度建筑及其位置,以及当前最佳解决方案"

当您遇到新建筑时:

  • 如果它不高于当前最大值 - 它将永远不会看到超过当前最大值(因为当前最大值看到它,并且会看得更远)。
  • 如果它高于当前最大值 - 新建筑物与之前最高建筑物之间的间隔是最佳的候选者,如果它比目前最好的解决方案更好。

当你到达开始时,产生最佳解决方案。

示例(基于您的示例):

10: highest is 10, so far best is null
9: found new highest, so far best is 10 with distance 1.
8: no new highest, 10 is best.
7: no new highest
...
0: update "best", 9 is the new best with distance of 9.

Yield: 9 as seeing furthest.