gpt4 book ai didi

java - 检查三角形阵列中的邻接

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

对于一个学校项目,我必须编写 cookies 桶三角钉游戏的代码,http://www.joenord.com/puzzles/peggame/3_mid_game.jpg这是它的链接。我做了一个三角对称矩阵来代表棋盘

|\
|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 数组的原因不相关。该项目是一个 AI 项目,为了开发启发式搜索算法,我需要访问彼此相邻的钉子的数量。我可以通过简单地除以 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 > row 的任何内容中。您可以通过检查单元格中的值 -1 来检查越界条件。然后计算一个位置周围的钉子数量,您总是做同样的事情:检查所有四个相邻的单元格是否为 1。

关于java - 检查三角形阵列中的邻接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29530814/

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