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

代码解释:

  1. 遍历数组: 代码使用嵌套循环遍历二维数组 ayy,查找值为0的元素。
  2. 计算距离: 对于每个值为0的元素,代码再次使用嵌套循环遍历数组 arr,查找值为1的元素,并使用 abs(i - g) + abs(j - k) 计算它们之间的曼哈顿距离。
  3. 更新最短距离: 变量 minDistance 用于存储找到的当前最短距离。在遍历过程中,如果计算出的距离小于 minDistance,则更新 minDistance
  4. 输出结果: 最后,代码输出 minDistance 的值,即数组中0到1的最短距离。

改进建议:

  • 可以将代码封装成一个函数,以便于复用。
  • 可以使用更优化的算法来计算最短距离,例如广度优先搜索算法。

希望本文能够帮助您理解如何使用C语言计算二维数组中0到1的最短距离。如果您有任何问题,请随时提问。

C语言:计算二维数组中0到1的最短距离

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

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