酷代码 AI
菜单
服务商

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]