C++实现找出前5个最大不重复数并降序输出
好的,我们来分析这个问题。这是一个典型的**排序 + 去重 + 截取前5个最大数**的问题。我会给出C++的实现,并附上详细的注释和步骤说明。 --- ## 🧠 问题解析 - 输入:一个整数 n 和 n 个整数(题目说“不同整数”,但为了通用性,我们还是做去重处理)。 - 处理: 1. 将数组从大到小排序。 2. 去重(但由于输入可能已不同,我们仍然保留去重逻辑,防止有重复数据)。 3. 输出前5个(如果不足5个,则全部输出)。 - 输出格式:数字之间用空格隔开。 --- ## 💻 C++ 实现 ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<int> nums(n); for (int i = 0; i < n; ++i) { cin >> nums[i]; } // 1. 从大到小排序 sort(nums.begin(), nums.end(), greater<int>()); // 2. 去重并输出前5个 int cnt = 0; // 已输出去重后的个数 int prev = -1; // 记录上一个输出的数,用于去重判断 for (int i = 0; i < n; ++i) { if (cnt >= 5) break; // 已输出5个 if (i == 0 || nums[i] != prev) { // 第一个数或与前一个不同 if (cnt > 0) cout << " "; // 不是第一个输出,前面加空格 cout << nums[i]; prev = nums[i]; cnt++; } } cout << endl; return 0; } ``` --- ## 🧪 样例验证 **输入:** ``` 8 3 1 2 0 9 7 6 8 ``` **排序后:** `9 8 7 6 3 2 1 0` **去重输出前5个:** `9 8 7 6 3` 输出结果符合题目要求。 --- ## 📌 开发建议 - **使用 `vector<int>` 便于动态存储**,比数组更安全。 - **`greater<int>()` 用来降序排序**,注意需要 `#include <functional>`,但在 `algorithm` 中通常可用。 - **去重逻辑**:由于题目可能输入重复数据,使用 `prev` 变量来跳过重复项,避免使用额外的 `set`,节省内存。 - **注意边界条件**:如果 `n < 5`,循环会在 `cnt` 达到 `n` 后自然退出,输出全部不重复的数。 - **输出格式**:在输出第一个数之前不要加空格,用 `cnt > 0` 判断。 --- ## ⚠️ 常见错误提示 1. 忘记包含 `<algorithm>` 导致 `sort` 未定义。 2. 在排序时忘记使用 `greater<int>()`,默认是升序。 3. 对重复数处理不当,可能出现输出超过5个的情况。 4. 在输出空格时,容易出现多空格或少空格的问题,推荐使用上述 `if (cnt > 0) cout << " ";` 方式。 --- ######[AI写代码神器 | 765点数解答 | 2026-08-28 19:05:53]
- 高考毕业晚会难题:从学生能力值求最大默契程度的Python解法(字节豆包 | 487点数解答 | 2026-01-24 13:10:18)126
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)571
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)483
- C++实现二进制转八进制及旋律类型判断(字节豆包 | 629点数解答 | 2026-03-21 19:50:41)90
- C++ 实现旋律类型判断:根据 7 个音符顺序输出升序、降序或混合(字节豆包 | 582点数解答 | 2026-03-21 19:41:16)83
- C++音符旋律判断:升序/降序/混合算法实现(DeepSeek | 951点数解答 | 2026-05-30 14:08:01)46
- C++判断7音符旋律升降序类型实现及要点解析(DeepSeek | 846点数解答 | 2026-08-07 19:12:43)27
- 六种常用内部排序算法性能大比拼:基于 Python 的随机数据测试(字节豆包 | 2396点数解答 | 2024-12-21 21:45:53)260
- C 语言实现六种内部排序算法性能大比拼:含代码与注意要点(字节豆包 | 2078点数解答 | 2024-12-21 21:46:21)238
- C语言实现六种内部排序算法性能比较:附代码及改进建议(字节豆包 | 2009点数解答 | 2024-12-23 08:03:13)336
- C 语言实现六种内部排序算法性能比较:代码详解与改进建议(字节豆包 | 1968点数解答 | 2024-12-23 08:16:23)248
- C 语言实现六种内部排序算法性能比较:代码详解与改进建议(字节豆包 | 2043点数解答 | 2024-12-24 16:03:18)260