C ++中二进制矩阵中最接近的1
在本教程中,我们将编写一个程序,在二进制矩阵中找到最近的 1。
让我们看看解决问题的步骤。
初始化所需大小的矩阵。
初始化另一个相同大小的矩阵来存储距离。
遍历整个矩阵
.
再次迭代整个矩阵
如果单元格为 1,则计算与当前单元格的距离。
更新最小距离。
.
如果当前单元格值为 1,则将距离设置为 0,因为从 1 到 1 的距离为 0
如果当前单元格值为 0
打印距离矩阵。
示例
让我们看看代码。
#include <bits/stdc++.h>输出结果using namespace std;
vector<vector<int>> findNearest1Distance(vector<vector<int>>& matrix) {
int rows = matrix.size();
if (rows == 0) {
return matrix;
}
int cols = matrix[0].size();
vector<vector<int>> distance(rows, vector<int>(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<vector<int>> matrix{
{0, 0, 1},
{1, 1, 0},
{0, 0, 0}
};
vector<vector<int>> 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 00 0 1
1 1 2
以上是 C ++中二进制矩阵中最接近的1 的全部内容, 来源链接: utcz.com/z/327514.html