有五个一维数组,一维数组长度不固定,按顺序从每个一维数组中找出一个数,确保这五个数的值是最接近的 C++代码实现,并打印找出的五个数
时间: 2024-09-12 19:17:32 浏览: 28
要在C++中找到五个来自不同一维数组中最接近的数字,首先你需要对每个数组进行遍历,存储每个数组的最小和最大值。然后计算这五个范围内的最小差值,再在这个范围内查找实际的数字。下面是一个简单的示例代码:
```cpp
#include <vector>
#include <algorithm>
// 定义一个结构体来存储数组范围
struct ArrayRange {
int min;
int max;
};
int findNearestNumbers(std::vector<std::vector<int>>& arrays) {
// 初始化5个数组范围
std::vector<ArrayRange> ranges(5);
for (size_t i = 0; i < arrays.size(); ++i) {
ranges[i].min = *std::min_element(arrays[i].begin(), arrays[i].end());
ranges[i].max = *std::max_element(arrays[i].begin(), arrays[i].end());
}
// 计算最小范围
int smallestRange = ranges[0].max - ranges[0].min + 1;
// 对于每个数组,在最小范围内找最接近的数
std::vector<int> nearestNumbers;
for (const auto& range : ranges) {
if (range.max - range.min <= smallestRange) {
smallestRange = range.max - range.min;
nearestNumbers.clear();
nearestNumbers.push_back(range.min);
nearestNumbers.push_back(range.max);
} else {
for (int num : arrays[i]) {
if (abs(num - (range.min + range.max) / 2) <= smallestRange) {
nearestNumbers.push_back(num);
if (nearestNumbers.size() == 5) break;
}
}
}
}
return nearestNumbers;
}
int main() {
// 示例数据
std::vector<std::vector<int>> arrays = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}, {13, 14, 15} };
std::vector<int> result = findNearestNumbers(arrays);
for (int num : result) {
std::cout << num << " ";
}
std::cout << "