C ++中二进制矩阵中最接近的1
在本教程中,我们将编写一个程序,在二进制矩阵中找到最近的1。
让我们看看解决问题的步骤。
初始化所需大小的矩阵。
初始化另一个相同大小的矩阵来存储距离。
遍历整个矩阵
.
再次迭代整个矩阵
如果单元格为1,则计算与当前单元格的距离。
更新最小距离。
.
如果当前单元格值为1,则将距离设置为0,因为从1到1的距离为0
如果当前单元格值为0
打印距离矩阵。
示例
让我们看看代码。
#include输出结果using namespace std; vector > findNearest1Distance(vector >& matrix) { int rows = matrix.size(); if (rows == 0) { return matrix; } int cols = matrix[0].size(); vector > distance(rows, vector (cols, INT_MAX)); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { if (matrix[i][j] == 1) { distance[i][j] = 0; }else if (matrix[i][j]) { for (int k = 0; k < rows; k++) { for (int l = 0; l < cols; l++) { if (matrix[k][l] == 1) { distance[i][j] = min(distance[i][j], abs(k - i) + abs(l - j)); } } } } } } return distance; } int main() { vector > matrix{ {0, 0, 1}, {1, 1, 0}, {0, 0, 0} }; vector > result = findNearest1Distance(matrix); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << result[i][j] << " "; } cout << endl; } return 0; }
如果你运行上面的代码,那么你会得到下面的结果。
1 1 0 0 0 1 1 1 2