gpt4 book ai didi

java - 如何检测数组中的相邻条目?

转载 作者:行者123 更新时间:2023-12-02 07:31:14 25 4
gpt4 key购买 nike

“用 Java 编写一个方法,如果在方格板(二维数组)的同一行、列或对角线上有 k 个相邻的符号出现,则该方法返回 true,其中 k 是所需内联符号的数量”

我该怎么做?我对如何检查行和列有一个粗略的想法(非常粗略;没有代码,只是想法),但我对检查对角线感到不知所措。

编辑:我正在考虑的另一种情况:如何检查任意位置?现在,我只考虑从 (0,0) 开始的出现次数,但是如果有一个从 (2,3) 到 (2,6) 的 3 字符串怎么办?我如何跟踪多次发生的情况?

编辑:检测左对角线(我在下面的评论中发布的问题的粗略代码):

LeftDiagonal(x, symbol) {
noOfOccurence = 0;

for (currentX = (size - 1); currentX >= x; currentX--) {
if (board[currentX][currentX] == symbol) {
noOfOccurence++;
} else {
break;
}
}

return (noOfOccurence >= k);
}

最佳答案

想到的最简单(尽管不是最有效的,因为它可能会回溯)的解决方案是编写一个递归函数,如下面的伪代码

 FindAdjacent(x, y)
if (matrix[x-1][y-1] == matrix[x][y])
return 1 + FindAdjacent(x-1,y-1);
.. Repeat for all 7 other adjacent locations (-1, +0) (+0, -1) (+1, -1) (-1, +1) (+1, +1) (+1, 0) (0, +1)
else return 1;

给定坐标 x,y,此例程将在“blob”中返回其周围的符号。
注意:这也意味着符号的分组,例如 3 排成一行,1 排在它旁边的一列中。

如果您要对矩阵中的每个位置调用一次,并查看所有递归级别返回后返回的值是否为 >= k,这可能会解决您的问题。请记住进行边界检查,这样您就不会检查矩阵[-1][-1]或任何其他内容。

关于java - 如何检测数组中的相邻条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888060/

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