gpt4 book ai didi

algorithm - 在半径增加的二维网格中查找相邻单元格

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:15 25 4
gpt4 key购买 nike

假设有一个二维网格,其中 X 是要检查的单元格,T 是满足给定单元格 X 的检查标准的单元格。

+---+---+---+---+---+
| T | | | | |
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
| | | X | | |
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+

现在我想通过以下方式搜索来找到最接近 X 且满足条件(本例中为 T)的单元格,其中数字表示要检查的单元格按升序排列:

+---+---+---+---+---+
| 11| | | | |
+---+---+---+---+---+
| 10| 1 | 2 | 3 | |
+---+---+---+---+---+
| 9 | 0 | X | 4 | |
+---+---+---+---+---+
| 8 | 7 | 6 | 5 | |
+---+---+---+---+---+
| | | | | |
+---+---+---+---+---+

硬编码 X-Cell 偏移量的简单方法行不通,因为 T 和 X 之间的距离是任意的。那么,如果没有前一种方法,我该如何实现呢?

最佳答案

还没有指定半径的测试,上面的循环没有标记任何东西,它只是填充一个正方形。 “半径”一词仅适用于圆形区域。

如果您想枚举位于圆内或附近的点,您可以使用欧氏距离:

第二个选项是最快的——我在过去的好日子里用过它——你会更快地找到点..但它给你留下了象限和边界问题,如果你存储点,运行时从整数中获得 yield 比较将是无关紧要的。

现在,我会使用第一个选项。对于相对较小的网格,使用循环,添加 R * R > V 的测试,其中 V 是 X 和 T 之间的欧几里得距离的平方,即 V = (T.X-X) * (T.X-X) + (T.Y-Y ) * (T.Y-Y) 对于每个点。

关于algorithm - 在半径增加的二维网格中查找相邻单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51123327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com