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;
}

代码解释:

  1. 声明变量 distance 用于存储计算出的距离。
  2. 定义二维数组 arrayy,大小为 99x99,用于存储输入数据。
  3. 使用 scanf_s() 函数读取输入的数组大小 nm,以及数组元素的值。
  4. 使用嵌套循环遍历数组 arrayy
  5. 如果 arrayy 在相同位置的元素都为 1,则输出 0,表示两点重合。
  6. 否则,如果 ayy 的当前元素为 0,则计算该点到最近的 1 的距离,并输出结果。

注意:

  • 代码中假设输入的数组元素值为 0 或 1。
  • 内层循环的范围被硬编码为 2x2,这意味着该代码只能处理 2x2 的数组。如果需要处理更大尺寸的数组,需要修改循环条件。

希望本教程能够帮助您理解如何使用C语言计算二维数组中两点之间的最短距离。如有任何问题,请随时提出。

C语言二维数组最短距离计算

原文地址: https://www.cveoy.top/t/topic/5RZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录