C++实现有重复元素的计数排序:解决P3697排序问题
以下是解决这个问题的 C++ 代码: ```cpp #include <iostream> using namespace std; const int MAX_NUM = 1000; int main() { int n; // 创建一个长度为 1001 的数组,用于记录每个数字出现的次数 int count[MAX_NUM + 1] = {0}; // 读取输入的序列个数 cin >> n; // 读取每个数字,并统计其出现的次数 for (int i = 0; i < n; ++i) { int num; cin >> num; count[num]++; } // 输出排序后的结果 bool first = true; for (int i = 0; i <= MAX_NUM; ++i) { for (int j = 0; j < count[i]; ++j) { if (!first) { cout << " "; } cout << i; first = false; } } cout << endl; return 0; } ``` ### 代码解释 1. **定义常量和数组**: - `MAX_NUM` 定义了数字的最大值,即 1000。 - `count` 数组用于记录每个数字出现的次数,初始值都为 0。 2. **读取数据**: - 使用 `cin >> n` 读取序列的个数。 - 通过循环读取每个数字,并将其对应的 `count` 数组元素加 1。 3. **输出排序结果**: - 遍历 `count` 数组,对于每个非零的 `count[i]`,输出 `i` 共 `count[i]` 次。 - 使用 `first` 变量来控制输出格式,避免在第一个数字前输出多余的空格。 ######[AI问答 | 449点数解答 | 2026-08-22 20:00:58]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)565
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)232
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)260
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)478
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)522
- jQuery 打造实用待办事项列表:输入添加、点击删除一步到位!(阿里通义 | 1139点数解答 | 2024-10-29 08:44:48)444
- jQuery 实现动态操作 DOM:打造带添加与删除功能的待办事项列表应用(阿里通义 | 687点数解答 | 2024-10-29 09:25:06)453
- Python程序:多人物9参数雷达图生成,参数折合百分制展示(字节豆包 | 873点数解答 | 2026-01-11 21:07:42)97
- C++实现多对象9参数雷达图绘制:输入满值后自动折合百分制(字节豆包 | 801点数解答 | 2026-01-11 21:09:16)101
- Python实现:多人员9参数雷达图生成程序,自由添加人员并折算分数(字节豆包 | 467点数解答 | 2026-01-11 21:10:04)72
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)436
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)439