#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;
}

小贴士

  1. 数组就像一排小盒子:每个盒子有自己的编号,可以放东西
  2. b[a[i]]++ 的意思是:找到编号为a[i]的盒子,往里面放一个计数小球

总结

数组计数就像是一个聪明的计数器,帮我们快速统计每个数字出现的次数。记住要:

  • ✅ 准备足够大的计数数组
  • ✅ 只输出真正出现的数字

现在你也是数组计数的小专家啦!🎉