【发布时间】:2016-08-13 02:31:04
【问题描述】:
我在检查二维布尔数组中特定单元格周围的值时遇到了一些问题。我试图假设我们正在检查的特定值不在二维数组的边缘或角落。我设置了一个 for 循环来迭代 8 次,因为如果我们检查的值不在 2D 数组的边缘,那么将有 8 个邻居。这是我获取特定单元格周围真实单元格数量的函数。
我想为 (3,5) 附近的每个设置为 true 的值增加 counter 变量。
当我运行此代码时,我的计数器返回 16。但给定单元格周围没有 16 个真值,我在循环中的逻辑是否错误?
int getNeighborCount(boolMatrix generation, int row, int col){
int counter = 0;
row = 3; //the cell we are checking around is at row 3, column 5
col = 5;
//8 neighbors
if (col > 0 && row > 0){
for (int i = 0; i < 8; i++){
if(generation.get(row - 1, col - 1)){
counter++;
} if(generation.get(row - 1, col)){
counter++;
} if(generation.get(row - 1, col + 1)){
counter++;
} if(generation.get(row, col - 1)){
counter++;
} if(generation.get(row, col + 1)){
counter++;
} if(generation.get(row + 1, col - 1)){
counter++;
} if(generation.get(row + 1, col)){
counter++;
} if(generation.get(row + 1, col + 1)){
counter++;
}
}
cout << "counter is " << counter;
}
return counter;
}
【问题讨论】:
标签: c++ arrays multidimensional-array