我正在尝试创建一个程序,该程序以特定方式在网格上排列 6 张卡片,以便没有卡片与相同类型的其他卡片相邻(类型为国王、王后和杰克)。网格是 4x4,但我只能将卡片放在以下图案内:
[ ][ ][x][ ]
[x][x][x][ ]
[ ][x][x][x]
[ ][ ][x][ ]
现在,我的主要问题是当我的方法尝试检查相邻单元格的卡片类型时。当它从 0,0 开始时,它会尝试检查 [row-1][column],这显然不起作用,因为它转换为 -1,0。问题是,我不知道如何正确实施。
如果之前有人问过这个问题,我深表歉意,因为我不确定要准确搜索什么(或如何正确命名这个问题)。
private boolean bordersCard(int row, int column, char cardChar)
{
Candidate center = board[row][column];
Candidate top;
Candidate bottom;
Candidate left;
Candidate right;
if (board[row-1][column] != null){
top = board[row+1][column];
}
else
{
top = new Candidate('?', 0);
}
if (board[row+1][column] != null){
bottom = board[row+1][column];
}
else
{
bottom = new Candidate('?', 0);
}
if (board[row][column-1] != null){
left = board[row][column-1];
}
else
{
left = new Candidate('?', 0);
}
if (board[row][column+1] != null){
right = board[row][column+1];
}
else
{
right = new Candidate('?', 0);
}
if ((center.getCardChar() == top.getCardChar()) || (center.getCardChar() == bottom.getCardChar()) ||
(center.getCardChar() == left.getCardChar()) || (center.getCardChar() == right.getCardChar())){
return false;
}
return true;
}