C语言:计算二维数组中0到1的最短距离
C语言:计算二维数组中0到1的最短距离
本文将介绍如何使用C语言计算二维数组中数字0到数字1的最短距离,并提供详细的代码示例和解释。
问题描述:
给定一个二维数组,数组元素包含数字0和1,编写C程序找到数组中任意一个0到任意一个1的最短距离。
代码示例:
#include <stdio.h>
#include <math.h>
int main() {
int distance = 0;
int arr[2][2] = {{1, 0}, {1, 0}};
int ayy[2][2] = {{1, 0}, {1, 0}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
if (ayy[i][j] == 0) {
int minDistance = 100; // 初始设定一个较大的值作为最短距离
for (int g = 0; g < 2; g++) {
for (int k = 0; k < 2; k++) {
if (arr[g][k] == 1) {
distance = abs(i - g) + abs(j - k);
if (distance < minDistance) {
minDistance = distance;
}
}
}
}
printf('0 到 1 的最短距离为: %d\n', minDistance);
}
}
}
return 0;
}
代码解释:
- 遍历数组: 代码使用嵌套循环遍历二维数组
ayy,查找值为0的元素。 - 计算距离: 对于每个值为0的元素,代码再次使用嵌套循环遍历数组
arr,查找值为1的元素,并使用abs(i - g) + abs(j - k)计算它们之间的曼哈顿距离。 - 更新最短距离: 变量
minDistance用于存储找到的当前最短距离。在遍历过程中,如果计算出的距离小于minDistance,则更新minDistance。 - 输出结果: 最后,代码输出
minDistance的值,即数组中0到1的最短距离。
改进建议:
- 可以将代码封装成一个函数,以便于复用。
- 可以使用更优化的算法来计算最短距离,例如广度优先搜索算法。
希望本文能够帮助您理解如何使用C语言计算二维数组中0到1的最短距离。如果您有任何问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/5mg 著作权归作者所有。请勿转载和采集!