Algorithm 检查看得最远的建筑物

Algorithm 检查看得最远的建筑物,algorithm,assembly,Algorithm,Assembly,我正在试着用汇编语言编写一个程序,它采用x和y坐标,x代表建筑物的位置,y代表建筑物的高度。 现在我要去看看看得最远的那栋楼 例如: 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 bes

我正在试着用汇编语言编写一个程序,它采用x和y坐标,x代表建筑物的位置,y代表建筑物的高度。 现在我要去看看看得最远的那栋楼

例如:

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.

正如您在示例中看到的,位置8处的建筑可以看到4米,位置7处的建筑可以看到2米,位置9处的建筑可以看到9米,这是最远的距离,所以我现在要做的就是打印9处的建筑可以看到9米,这是最远的距离。
我似乎想不出一个算法来做到这一点。

从最后一个到第一个,同时跟踪到目前为止最大高度的建筑及其位置,以及“当前最佳解决方案”

当您遇到新建筑时:

  • 如果它不高于当前最大值-它将永远看不到比当前最大值更多的值(因为当前最大值直到它看到为止,并且将看到离它更远的地方)
  • 如果它高于当前最大值-新建筑和前一最高建筑之间的间隔是“最佳”的候选,如果它优于目前为止的最佳解决方案
当你到达起点时,产生最好的解决方案

示例(基于您的示例):


从最后一个到第一个,同时跟踪到目前为止最大高度的建筑及其位置,以及“当前最佳解决方案”

当您遇到新建筑时:

  • 如果它不高于当前最大值-它将永远看不到比当前最大值更多的值(因为当前最大值直到它看到为止,并且将看到离它更远的地方)
  • 如果它高于当前最大值-新建筑和前一最高建筑之间的间隔是“最佳”的候选,如果它优于目前为止的最佳解决方案
当你到达起点时,产生最好的解决方案

示例(基于您的示例):


到目前为止你尝试了什么,你被困在哪里?提供一个答案。到目前为止,您尝试了什么,您被困在哪里?提供一个。