C++ 数组距离计算

题目描述

有两个分别为 'n' 和 'm' 的数组 'x[]' 和 'y[]'。从 'x' 中任意取出一个元素 'x[i]',然后从 'y' 中任取一个元素 'y[j]',他们的差的绝对值为 '|x[i] - y[i]|',一共有 'n × m' 对这样的差值,其中最小的值称为数组的距离。

请你写一个程序求出数组的距离。

输入

输入第一行两个整数 'n, m' (1 ≤ n, m ≤ 10^6)。

接下来一行输入 'n' 个整数表示数组 'x'。

接下来一行输入 'm' 个整数表示数组 'y'。

输入的数组元素绝对值小于等于 10^8。

输出

输出一行一个整数表示两个数组的距离。

样例输入

3 2
1 2 3
4 5

样例输出

1

样例输入

4 3
10 20 30 40
15 25 35

样例输出

5

样例输入

2 2
100000000 200000000
300000000 400000000

样例输出

100000000

C++ 代码实现

#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;

int main() {
  int n, m;
  cin >> n >> m;

  int x[n], y[m];
  for (int i = 0; i < n; i++) {
    cin >> x[i];
  }
  for (int i = 0; i < m; i++) {
    cin >> y[i];
  }

  int minDistance = INT_MAX;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      int distance = abs(x[i] - y[j]);
      minDistance = min(minDistance, distance);
    }
  }

  cout << minDistance << endl;
  return 0;
}

算法解释

  1. 读取输入:首先读取两个数组的长度 'n' 和 'm',以及两个数组的元素。
  2. 初始化最小距离:将最小距离 'minDistance' 初始化为最大值 'INT_MAX'。
  3. 遍历数组:使用两层循环遍历两个数组的所有元素组合。
  4. 计算距离:对于每个元素组合,计算它们的差的绝对值 'distance'。
  5. 更新最小距离:比较当前距离 'distance' 和最小距离 'minDistance',并更新 'minDistance' 为较小的值。
  6. 输出结果:最后输出 'minDistance' 作为两个数组的距离。

总结

本文介绍了如何使用 C++ 计算两个数组的距离,并提供了完整的代码实现和算法解释。读者可以根据本文提供的代码和算法,轻松实现自己的数组距离计算程序。

C++ 数组距离计算 - 算法实现及示例

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

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