#5583. 数组计数——goc版本
数组计数——goc版本
当前没有测试数据。
数组计数学习笔记
什么是数组计数?
想象一下,你有一个装满了各种颜色糖果的袋子,数组计数就像是帮我们统计每种颜色的糖果有多少颗!
代码解析
1. 准备工作
int n,a[110],b[15];
生动解释:
int n→ 记录糖果的总数int a[110]→ 装糖果的大袋子(能装110颗)int b[15]→ 我们的"颜色计数器"(能统计15种颜色)
2. 输入糖果信息
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
b[a[i]]++;
}
糖果店的故事:
假设我们有7颗糖果,颜色分别是:
1号色、2号色、3号色、2号色、1号色、1号色、3号色
当程序运行时:
- 读到1号色 → b[1]从0变成1
- 读到2号色 → b[2]从0变成1
- 读到3号色 → b[3]从0变成1
- 读到2号色 → b[2]从1变成2
- 读到1号色 → b[1]从2变成3
- 读到1号色 → b[1]从3变成4
- 读到3号色 → b[3]从1变成2
3. 输出统计结果
for(int i=1;i<=n;i++){
if(b[i]>0)cout<<i<<" "<<b[i]<<endl;
}
输出结果:
1 4
2 2
3 2
意思是:1号颜色有4颗,2号颜色有2颗,3号颜色有2颗
重要注意事项!
⚠️ 注意1:数组大小要足够
int b[15]; // 只能统计0-14这15个数字
例子: 如果你的糖果颜色编号有15号,但b[15]只能统计到14号,15号糖果就统计不到了!
⚠️ 注意2:只输出有糖果的颜色
if(b[i]>0) // 只有当这种颜色有糖果时才输出
为什么? 如果没有这个判断,我们会输出所有颜色,包括那些根本没有糖果的颜色!
动手试一试!
练习1:统计班级同学喜欢的运动
假设有5个同学,他们喜欢的运动编号是:1(足球)、2(篮球)、3(游泳)、1(足球)、2(篮球)
你来预测一下输出结果:
______ ______
______ ______
______ ______
练习2:找错误
下面这段代码有什么问题?
int n,a[50],b[10];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
b[a[i]]++;
}
for(int i=0;i<n;i++){
cout<<i<<" "<<b[i]<<endl;
}
小贴士
- 数组就像一排小盒子:每个盒子有自己的编号,可以放东西
- b[a[i]]++ 的意思是:找到编号为a[i]的盒子,往里面放一个计数小球
总结
数组计数就像是一个聪明的计数器,帮我们快速统计每个数字出现的次数。记住要:
- ✅ 准备足够大的计数数组
- ✅ 只输出真正出现的数字
现在你也是数组计数的小专家啦!🎉