Java 检查三角形数组中的邻接关系

Java 检查三角形数组中的邻接关系,java,algorithm,multidimensional-array,artificial-intelligence,Java,Algorithm,Multidimensional Array,Artificial Intelligence,对于一个学校项目,我必须编写“饼干桶三角钉”游戏,这里有一个链接。我制作了一个三角形对称矩阵来表示电路板 |\ |0\ |12\ |345\ |6789\.... public int get( int row, int col ) { if (row >= col) // prevents array out of bounds return matrix[row][col]; else re

对于一个学校项目,我必须编写“饼干桶三角钉”游戏,这里有一个链接。我制作了一个三角形对称矩阵来表示电路板

|\
|0\
|12\
|345\
|6789\.... 

public int get( int row, int col ) 
    {
        if (row >= col) // prevents array out of bounds 
            return matrix[row][col];
        else
            return matrix[col][row];
    }       // 

这是我的
get()
函数,它是矩阵的形式。如果我试图访问
get(Row,Column)
Row>Column
我可以访问
get(Column,Row)
在所有方法中都是这样设置的。这样更容易防止越界的事情发生。三角形中的空白点设置为0,所有桩均设置为1。我没有使用
Boolean
数组的原因与此无关。该项目是一个人工智能项目,要开发一个启发式搜索算法,我需要访问彼此相邻的桩号。我可以通过简单地除以total/2轻松地防止大多数重复,因为它将计算两个方向上的每个相邻项。我不知道当我越过中间线时如何防止重复支票。它只在0、2、5和9位置上起作用。如果我真的想,我可以为这些位置编写一组单独的规则,但这感觉不是很好的编码,也不适用于不同大小的三角形。欢迎任何意见,如果您需要更多信息,请随时询问

0,2,5,9不是算术级数。有限差分2-0=2,5-2=3,9-5=4是算术级数。所以序列是0,0+2=2,2+3=5,5+4=9,9+5=14,14+6=20等等。它们比三角形数1,3,6,10,15,21等少一个。第n个三角形数有一个快捷表达式,n(n+1)/2(其中n从1开始,而不是0)。所以你的数字是n(n+1)/2-1,表示n=1,2,3


无论如何,您正在经历的情况应该告诉您,将其设置为get(row,col)==get(col,row)是一个坏主意。我要做的是设置它,让你的谜题从索引1,1开始,然后从那里增加;然后将特殊值-1放入矩阵项0、y和x、0以及具有col>行的任何内容中。只需检查单元格中的值-1,就可以检查是否存在越界条件。然后,为了计算一个位置周围的钉子数量,您总是做同样的事情:检查所有四个相邻单元格的1。

0 2 5 9。。。。。这听起来像是一个算术级数;也许你可以考虑一个函数,它可以给你第i个元素的值,我不访问get(第5个索引),我必须得到get(2,2),谢谢你,我刚刚回答了我自己的问题。每当a=b调用单独的规则时。