算法问题:从固定相机查看树木的最佳角度

JDD*_*JDD 8 algorithm max data-structures

面试的时候被问到这个问题,不知道怎么解决。“给定森林中的固定相机(带有预定义的树木),请给出相机拍摄最多树木的最佳角度”您将如何处理它,或者至少您会问什么问题以获得更多要求?

Yol*_*ola 6

如果树木没有遮挡树木,则:

  1. 按围绕相机位置的角度对所有树木进行排序。
  2. 使用滑动窗口的方法来寻找方向看。

如果树木可以遮挡其他树木,那么第二步就有点棘手了。


Fuz*_*Ami 5

这个想法是这样的:

  1. 将树坐标列表转换为角度列表。
  2. 对角度列表进行排序
  3. 使用滑动窗口来查找使树数量最大化的起始索引和结束索引。
  4. 注意:由于放置相机的最佳角度实际上可能非常接近 360 度,因此您需要考虑360/0 线另一侧的树木。处理该问题的最简单方法是通过 360 度平移将重复的树添加到列表中(在步骤 2 中)。例如,度数为 10 的树将添加两次,度数为 10 和 360+10。实际上,您并不需要将所有树木添加两次 - 您只需要复制 360+camera_angle 范围内的树木,但复制所有树木很容易,而且没有什么坏处。