C++统计试剂瓶数 高效数组计数法
以下是一个完整的 C++ 程序,用于统计每种编号为 1 到 10 的试剂数量,并按顺序输出。 ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 输入试剂总瓶数 int count[11] = {0}; // 使用下标1~10存储每种试剂的瓶数,初始化为0 for (int i = 0; i < n; i++) { int id; cin >> id; // 读取每瓶试剂的编号 count[id]++; // 对应试剂数量加1 } // 按顺序输出1~10号试剂的数量 for (int i = 1; i <= 10; i++) { cout << count[i]; if (i != 10) { cout << " "; // 除了最后一个数字,其余数字后面加空格 } } return 0; } ``` ## 🔍 代码说明 ### 💡 解题思路 - 已知试剂编号范围是 **1 ~ 10**,可以使用一个大小为 11 的数组 `count` 来记录每种试剂的瓶数。 - 读取每一个编号,直接将对应下标位置的计数器加 1。 - 最后依次输出 1 到 10 号试剂对应的数量,中间用空格分隔。 ### 📌 关键点解析 | 特性 | 说明 | |------|------| | **数组大小** | 设为 `count[11]`,方便直接使用 `count[id]` 而不需要 `id-1` 转换 | | **初始化** | `{0}` 将数组中所有元素初始化为 0 | | **输入循环** | 一次读取一个整数并累加 | | **输出格式** | 循环中判断是否为最后一个数字,避免多余空格 | ### ⚙️ 输入输出样例验证 **样例1** ``` 输入: 8 1 4 1 4 2 1 3 5 输出: 3 1 1 2 1 0 0 0 0 0 ``` **样例2** ``` 输入: 1 1 输出: 1 0 0 0 0 0 0 0 0 0 ``` ## 🚀 开发建议 1. **使用常量表示试剂种类数量**:可将 `10` 定义为 `#define TYPE_NUM 10` 或 `const int TYPE_NUM = 10;`,提高代码可维护性。 2. **考虑输入校验**:可判断输入的编号是否在 1~10 范围内,避免数组越界。 3. **输入输出优化**:如果 n 较大(接近 1000),应对输入使用 `ios::sync_with_stdio(false); cin.tie(0);` 提高效率。 4. **拓展性**:如需支持更多试剂种类或动态范围,可将数组替换为 `map<int, int>`,但当前需求下数组更高效。 ## 📚 典型应用场景 - 数据统计类问题(如投票统计、成绩分布、商品编码统计) - 频次分析入门题 - C++ 数组与循环的基础训练 ## ❓ 常见问题(FAQ) **Q:为什么数组要设为 count[11] 而不是 count[10]?** A:因为编号从 1 开始,使用 count[10] 会导致 count[10] 越界。count[11] 会使用下标 0~10,其中下标 0 不使用,下标 1~10 对应编号 1~10。 **Q:可以不使用数组,直接用 if-else 或 switch 吗?** A:技术上可以,但代码冗长、不易扩展。数组是最简洁高效的方式。 **Q:n 可以有多大?** A:题目规定 n ≤ 1000,时间和内存都足够,当前方案完全满足。 ######[AI写代码神器 | 866点数解答 | 2026-05-16 21:30:07]
- 巴黎奥运:中国女排淘汰赛对决土耳其,朱婷成致胜关键!(字节豆包 | 448点数解答 | 2024-08-06 15:59:48)183
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)35
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)384
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)409
- Python 实现:精确统计两数范围内素数个数,附完整代码与优化思路(阿里通义 | 292点数解答 | 2024-11-28 21:36:29)274
- Python 文件数量统计:检测当前及指定路径文件数并处理错误 (字节豆包 | 179点数解答 | 2024-12-11 13:09:13)221
- Python三关挑战:文件与文件夹数量统计及路径获取(字节豆包 | 493点数解答 | 2024-12-11 13:29:49)237
- 星际编码大赛终极对决:机械星AI与异星人激战“逆序对”统计难题(字节豆包 | 509点数解答 | 2025-04-19 17:33:00)300
- Python实现:输入5个字符统计“0”出现次数及开发注意要点(字节豆包 | 255点数解答 | 2026-01-16 14:23:30)68
- 巧用筛法!计算 N 到 M 间数的最大质因数个数(DeepSeek | 245点数解答 | 2026-01-18 12:43:51)57
- C++高效求解1到n中能同时被2和3整除的数之和(DeepSeek | 1187点数解答 | 2026-04-11 10:03:38)30
- JavaScript开发:为何 React 的 useState 用数组而非对象?优势揭秘!(阿里通义 | 202点数解答 | 2023-11-09 01:54:01)304