微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

仅使用对角线移动到达目的地的最低成本

如何解决仅使用对角线移动到达目的地的最低成本

给定一个无限网格,我们需要找出从给定源到达目的地所需的最低成本。成本计算如下。 只允许对角移动。 仅当方向改变时成本才会增加。类似于国际象棋中的主教移动。您可以根据需要在同一对角线上移动任意数量的单元格,而不会产生任何额外费用。如果源是 (1,1) 而目的地是 (3,3) 成本是 1。

有人可以帮助我使用有效的算法来实现这一点。

解决方法

您可以从任何地方到达任何地方,方向的变化不超过 1 次。因此,如果源和目标在同一对角线上,则成本为零。否则成本为 1。

查找实际路径:

Let source be at xs,ys
Let destination be xd,yd

Specify four diagonal lines passing through the points

y = ys + ( xs - x )
y = ys - ( xs - x )

Is destination on one of these lines?  If so,done.

y = yd + ( xd - x )
y = yd - ( xd - x )

Calculate line intersection ( https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection )
There will be two - select one
Travel from source to intersection point
Travel from intersection to destination

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。