C语言二维数组最短距离计算
C语言二维数组最短距离计算
本教程将介绍如何使用C语言计算二维数组中两点之间的最短距离。代码示例中包含详细注释,帮助您理解算法思路。
#include <stdio.h>
#include <math.h>
int main() {
int distance = 0;
int arr[99][99];
int ayy[99][99];
int n, m;
int number;
scanf_s('%d %d', &n, &m);
for (int h = 0; h < n; h++) {
for (int f = 0; f < m; f++) {
scanf_s('%d', &number);
arr[h][f] = number;
ayy[h][f] = number;
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
if (arr[i][j] == 1 && ayy[i][j] == 1)
printf('0\n');
else 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('%d\n', minDistance);
}
}
}
return 0;
}
代码解释:
- 声明变量
distance用于存储计算出的距离。 - 定义二维数组
arr和ayy,大小为 99x99,用于存储输入数据。 - 使用
scanf_s()函数读取输入的数组大小n和m,以及数组元素的值。 - 使用嵌套循环遍历数组
arr和ayy。 - 如果
arr和ayy在相同位置的元素都为 1,则输出 0,表示两点重合。 - 否则,如果
ayy的当前元素为 0,则计算该点到最近的 1 的距离,并输出结果。
注意:
- 代码中假设输入的数组元素值为 0 或 1。
- 内层循环的范围被硬编码为 2x2,这意味着该代码只能处理 2x2 的数组。如果需要处理更大尺寸的数组,需要修改循环条件。
希望本教程能够帮助您理解如何使用C语言计算二维数组中两点之间的最短距离。如有任何问题,请随时提出。
原文地址: https://www.cveoy.top/t/topic/5RZ 著作权归作者所有。请勿转载和采集!