我的 C++ 老师为我们遇到的问题提供了解决方案,但有一部分我无法理解发生了什么。有人可以向我解释吗?正在从文本文件中读取 m 和 n 以定义数组的大小。
for (int row=0; row < m; row++) {
for (int col = 0; col < n; col++) {
if (field[row][col] =='*') {
ctr[row - 1][col - 1]++;
ctr[row - 1][col]++;
ctr[row - 1][col + 1]++;
ctr[row][col - 1]++;
ctr[row][col + 1]++;
ctr[row + 1][col - 1]++;
ctr[row + 1][col]++;
ctr[row + 1][col + 1]++;
}
}
}
最佳答案
它将矩阵中星号 (*
) 周围所有方 block 的值增加一。
首先它搜索一个*
,然后增加围绕星星的所有 8 个方 block 的值。
假设矩阵 field
的一部分如下所示。
| |
+----+----+---+
| * |
+----+----+---+
| |
和ctr
如下
1 | 1 | 1
+----+----+---+
1 | 1 | 1
+----+----+---+
1 | 1 | 1
ctr
将是
2 | 2 | 2
+----+----+---+
2 | 1 | 2
+----+----+---+
2 | 2 | 2
逻辑如上。但是当星星靠近边界时要小心访问冲突。
关于c++ - C 解决方案,有人可以向我解释这段代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900936/