编辑:解决,请参阅下面的我的帖子。
我正在用Java实现棋盘游戏,需要开发一种算法来从2d数组中的单个单元中找到“连接”单元的数量。
编辑:通过连接,我的意思是与我在其中开始的单元格具有相同的值。如果该方法调用值为x的单元格,则需要找到所有与之共享一条边(而不是对角线)的单元。
IE,如果我有一个由1和0组成的二维数组,我想找到我所选择的单个单元格中连接单元数最多的单元:
[1][1][1][0]
[1][0][1][1]
[1][0][0][1]
[1][0][0][1]
在[0] [0]上运行该算法将返回10,因为有6个1沿右路径下降,有3个沿左路径下降。
是否有解决此问题的已知方法?如果没有,您将如何解决呢?我正在绞尽脑汁,似乎找不到出路。任何建议表示赞赏。
最佳答案
您可能想看看一些路径查找算法。
最常见和最快的是Dijkstra's Algorithm
这个概念很容易理解和实现。代替查找路径,您可以在要搜索的区域周围找到相连的1或0。
看一看用Dijkstra算法在Java中对2D数组进行路径查找。 Path Finding
通过查看周围的“节点”(1或0),您可以找到“连接”部分。
关于java - 查找二维阵列中的连接单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21716926/