C语言实现三个数组元素最小距离计算
#include <stdio.h> #include <limits.h> #include <stdlib.h>
// 计算距离D函数 int calculateDistance(int a, int b, int c) { return abs(a - b) + abs(b - c) + abs(c - a); }
// 输出最小距离及对应的三元组函数 void findMinDistance(int s1[], int s2[], int s3[], int n1, int n2, int n3) { int minDistance = INT_MAX; int minA, minB, minC;
// 遍历所有可能的三元组
for (int i = 0; i < n1; i++) {
for (int j = 0; j < n2; j++) {
for (int k = 0; k < n3; k++) {
int distance = calculateDistance(s1[i], s2[j], s3[k]);
if (distance < minDistance) {
minDistance = distance;
minA = s1[i];
minB = s2[j];
minC = s3[k];
}
}
}
}
// 输出最小距离及对应的三元组
printf('最小距离为:%d\n', minDistance);
printf('三元组为:%d, %d, %d\n', minA, minB, minC);
}
int main() { int s1[] = {-1, 0, 9}; int s2[] = {-25, -10, 10, 11}; int s3[] = {2, 9, 17, 30, 41}; int n1 = sizeof(s1) / sizeof(s1[0]); int n2 = sizeof(s2) / sizeof(s2[0]); int n3 = sizeof(s3) / sizeof(s3[0]);
findMinDistance(s1, s2, s3, n1, n2, n3);
return 0;
}
// 代码解释:
// 这段代码是一个用于计算三个数组中元素之间距离的程序。以下是对代码的解释:
//
// 1. calculateDistance 函数用于计算三个整数之间的距离,它接受三个整数作为参数,并返回它们之间距离的绝对值之和。
//
// 2. findMinDistance 函数用于寻找三个数组 s1[]、s2[] 和 s3[] 中元素的最小距离,并打印出最小距离以及对应的三元组。它接受这三个数组及它们的长度作为参数。
//
// 3. 在 findMinDistance 函数中,首先定义了一个初始的最小距离 minDistance,并将其设置为整型变量的最大值 INT_MAX。还定义了三个变量 minA、minB 和 minC,用于保存最小距离对应的三元组。
//
// 4. 通过嵌套的循环遍历所有可能的三元组,计算它们的距离,并与当前的最小距离进行比较。如果找到一个更小的距离,则更新最小距离和对应的三元组。
//
// 5. 最后,在 main 函数中定义了三个数组 s1[]、s2[] 和 s3[],并计算它们的长度。然后调用 findMinDistance 函数,并将这三个数组及其长度作为参数传递给函数。
//
// 6. 程序执行完毕后,返回值为0,表示程序正常结束。
//
// 总体而言,这段代码的功能是寻找三个数组中元素之间的最小距离,并输出最小距离及对应的三元组。
原文地址: https://www.cveoy.top/t/topic/OY1 著作权归作者所有。请勿转载和采集!