gpt4 book ai didi

java - 在二维数组中查找数字的对角线?

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:16 25 4
gpt4 key购买 nike

如果我有以下 5x5 矩阵,可以说

{ ,  , T ,  , }
{ , T , T , , }
{ , , T , , }
{ , T, , , }
{T, , , , }

我必须检查矩阵中的字符是否与另一个矩阵成对角线,我用以下方式检查它们,

public boolean isDiagonal(int row,int col){
if (row == board.length-1 && board[row-1][col+1] == 'T') {
return true;
} else if (col == board.length -1 && board[row+1][col-1] == 'T') {
return true;
} else if (board[row][col] == 'T' && board[row+1][col+1] == 'T' ||
board[row][col] == 'T' && board[row-1][col-1] == 'T') {
return true;
} else if (board[row][col] == 'T' && board[row-1][col+1] == 'T' ||
board[row][col] == 'T' && board[row+1][col-1] == 'T') {
return true;
}

return false;
}

角色 T 是随机分配在棋盘上的。我需要在放置 char T 时检查是否存在另一个 T 对角线。

该方法获取行和列,并检查棋盘上是否存在字符 T 以及它是否与另一个 T 成对角线。

如果 row = 0 且 col = 4 或 row = 1 且 col = 5 等等...它将失败并抛出数组越界。

获得矩阵中任意数字的对角线并避免边缘情况的有效方法是什么?

PS:我正在尝试用 Java 编写代码

最佳答案

我将创建一个方法来获取元素,如果坐标无效,则返回默认值。只需对除您搜索的内容之外的任何内容使用默认值即可。

public char getWithDefault(int row, int col, char default ) {
if ((0 <= row) && ( row < board.length) &&
(0<=col) && (col < board[row].length)) {
return board[row][col];
}
return default;
}

public boolean isDiagonal(int row,int col){
// arbitrary default value, as long as it is != 'T'
if (getWithDefault(row,col,'1') != 'T') return false;
if (getWithDefault(row+1,col+1,'1') == 'T') return true;
if (getWithDefault(row+1,col-1,'1') == 'T') return true;
if (getWithDefault(row-1,col+1,'1') == 'T') return true;
if (getWithDefault(row-1,col-1,'1') == 'T') return true;
return false;
}

从你的代码中,我推断出 board 是一个 char 数组的数组。

关于java - 在二维数组中查找数字的对角线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36296388/

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