欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 机试题——找磨损度最高和最低的硬盘

机试题——找磨损度最高和最低的硬盘

2025/2/3 20:43:05 来源:https://blog.csdn.net/weixin_45605341/article/details/145418100  浏览:    关键词:机试题——找磨损度最高和最低的硬盘

题目描述

存储阵列上使用的一批固态硬盘,根据硬盘磨损值给定一个数组 endurances,数组中每个元素表示单块硬盘的磨损度(0 到 10000 之间)。磨损度越大,表示此盘需要更换的概率越高。需要找出磨损度最高三块盘的下标和磨损度最低三块盘的下标。

输入:

  • 输入为一组硬盘磨损度的数组。

输出:

  • 第一行:磨损度最高三块盘的下标,按下标升序展示。
  • 第二行:磨损度最低三块盘的下标,按下标升序展示。

输入说明:

  • 数组 endurances 中无重复值。
  • 数组的长度范围:[6, 200]
  • 数组的下标从 0 开始。

输出说明:

  • 输出两行结果,第一行是磨损度最高三块硬盘的下标,第二行是磨损度最低三块硬盘的下标,且下标按升序排列。

用例输入

1 50 40 68 72 86 35 14 87 99 63 75
5 8 9 
0 6 7
23 34 56 12 11 10
0 1 2 
3 4 5

解题思路

  1. 输入解析

    • 先读取硬盘的磨损度数组 endurances
    • 同时构建一个数组,将硬盘的下标和磨损度一起存储,以便后续排序操作。
  2. 排序并提取最大和最小值的下标

    • 提取出磨损度最低的前三个元素的下标。
    • 提取出磨损度最高的后三个元素的下标。
  3. 排序下标

    • 对最小和最大值的下标进行升序排序,确保输出按升序排列。

代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int main() {vector<pair<int, int>> data;int val;int idx = 0;while (cin >> val) {data.push_back({ idx, val });idx++;if (cin.get() == '\n') break;  // 遇到换行符结束输入}// 按磨损度升序sort(data.begin(), data.end(),[](const pair<int, int>& a, const pair<int, int>& b) {return a.second < b.second;});// 取出最低三块硬盘下标vector<int> min_index;for (int i = 0; i < 3; ++i) {min_index.push_back(data[i].first);}// 取出最高三块硬盘下标vector<int> max_index;for (int i = data.size() - 3; i < data.size(); ++i) {max_index.push_back(data[i].first);}// 排序输出最低三块硬盘下标sort(min_index.begin(), min_index.end());sort(max_index.begin(), max_index.end());for (int i = 0; i < 3; ++i) {cout << max_index[i] << " ";}cout << endl;for (int i = 0; i < 3; ++i) {cout << min_index[i] << " ";}cout << endl;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com