【发布时间】:2015-06-14 08:45:59
【问题描述】:
对于一个学校项目,我必须编写饼干桶三角钉游戏,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 数组的原因不相关。该项目是一个人工智能项目,要开发一种启发式搜索算法,我需要访问彼此相邻的钉子的数量。我可以通过简单地除以 total/2 来轻松防止大多数重复,因为它会计算两个方向上的每个相邻。当我越过那条中线时,我不知道如何防止重复检查。它只在 0 2 5 和 9 位置上很重要。如果我真的想要,我可以为这些位置编写一组单独的规则,但这感觉不是很好的编码,并且对于不同大小的三角形不起作用。欢迎任何意见,如果您需要更多信息,请随时询问。
【问题讨论】:
-
0 2 5 9.....这听起来像一个等差数列;所以也许你可以想一个函数可以给你第 i 个元素的值
-
我不访问 get(5th index) 我必须做 get(2,2),多亏了你,我才回答了我自己的问题。每当 a=b 调用单独的规则时。
标签: java algorithm multidimensional-array artificial-intelligence