public static int countNeighbors(boolean[][] BB, int r, int c) {
int countalive = 0;
for (int i = r -1;i<=r+1; i++) {
for (int j = c -1; j<c+1;j++) {
if (BB[i][j]) {
countalive++;
}
}
}
return countalive;
}
正在阅读矩阵。
oooooooo
o###oooo
o####o#o
ooo##o#o
o#o#o##o
oooooooo
我注意到了一些错误,所以我打印出了这部分代码。使用规范运行时
countNeighbors(myNewMatrix,1,1)
我得到的返回值为2,当它应该是3时。
计算围绕它的真实(#)的平铺数量。
这是一场“生命游戏”任务。
答案 0 :(得分:3)
(1,2),(2,1)和(2,2)有(1,1)的3个邻居。您的代码在2个帐户中出错:
if
以避免计算(r,c)位置本身。j
for
循环中过早停止,然后才转到c + 1
。这使得计数2太低(缺少2个匹配)。将条件更改为j<=c+1
,以与i
for
循环条件保持一致。两个错误(+1和-2)的综合影响解释了为什么你的计数低1
。