自学内容网 自学内容网

作业-数组计数法

目录

数字出现次数

题目描述

输入

输出

输入复制

输出复制

求n个数中每个数出现的次数

题目描述

输入

输出

输入复制

输出复制

声音识别

题目描述

输入

输出

输入复制

输出复制

选班委

题目描述

输入

输出

输入复制

输出复制

数字出现次数

题目描述

输入

输出

输入复制

输出复制



数字出现次数

题目描述

有50 个数(0∼19),求这50个数中相同数字出现的最多次数为几次?

输入

50 个数字。

输出

1 个数字(即相同数字出现的最多次数)。

输入复制

1 10 2 0 15 8 12 7 0 3 15 0 15 18 16 7 17 9 1 19 16 12 17 12 4 3 11 1 14 2 11 14 6 11 4 6 4 11 13 18 7 0 3 2 3 18 19 2 16

输出复制

4

#include <iostream>
using namespace std;
int cnt[19];
int main()
{
int n = 50;
for(int i = 0;i<n;i++)
{
int a;
cin>>a;
cnt[a]++;
}
int f;
for(int i = 0;i<30;i++)
{
if(cnt[i]<cnt[i+1])
{
f = cnt[i+1];
}
}
cout<<f;
return 0;
}

求n个数中每个数出现的次数

题目描述

从键盘读入n 个整数(n≤100),这n 个数都是1 ~ 10 之间的数,请从小到大输出每个出现过的数,以及统计出每个数出现的次数?比如:假设读入5 个数,分别为1 2 3 3 5 ,统计结果如下:1 出现1 次,2 出现1 次,3 出现2 次,5 出现1 次。

输入

第1 行输入一个整数n 。

第2 行输入n 个整数,用空格隔开。

输出

输出若干行,每行2 个数,用空格隔开,按照从小到大的顺序,输出每个数以及每个数出现的次数。

输入复制

5

1 2 3 3 5

输出复制

1 1

2 1

3 2

5 1

#include <iostream>
using namespace std;
int cnt[10];
int main()
{
int n;
cin>>n;
for(int i = 0;i<n;i++)
{
int a;
cin>>a;
cnt[a]++;
}
for(int i = 0;i<10;i++)
{
if(cnt[i]>0)
{
cout<<i<<" "<<cnt[i]<<endl;
}
}
return 0;
}

声音识别

题目描述

学校王老师研发了一套新的声音识别系统,该系统预先将每位同学的学号和声音录入之后,只要同学一说话,就知道是哪个学号的同学在说话(不同的同学声音是完全不一样的)王老师将系统装在了教室,系统收集到了一节英语课中同学们说话的n 个片段,并转换为了同学们的学号,请你编程帮助王老师计算出,有多少个同学在英语课中发过言,并按照学号由小到大,输出每位同学的学号及该学号的同学发言的次数。比如,假设经过系统分析,得到如下的88 个同学的学号分别是:8 1 6 1 8 6 7 2,表示同学们的发言顺序分别是:8 号、1 号、6 号、1 号、8 号、6 号、7 号、2 号,那么一共有5位同学发过言,按照学号由小到大输出发言次数如下:

 分别代表1号同学发言2次、2 号同学发言1 次、6 号同学发言2次、7 号同学发言1 次、8 号同学发言2 次。

输入

输入有2 行,第1 行有一个整数n(3≤n≤10000);第二行有n 个数字(这些整数都是1~100 之间的整数,含1 和100),数字之间用空格隔开,代表同学们的学号。

输出

第11 行输出11 个整数,代表总共有多少名同学发过;接下来输出若干行,每行2 个整数,用空格隔开,表示按照学号由小到大输出发言同学的学号及每位同学发言的次数。

输入复制

8

8 1 6 1 8 6 7 2

输出复制

5

1 2

2 1

6 2

7 1

8 2

#include <iostream>
using namespace std;
int cnt[88];
int main()
{
int n;
cin>>n;
for(int i = 0;i<n;i++)
{
int a;
cin>>a;
cnt[a]++;
}
int f = 0;
for(int i = 0;i<88;i++)
{
if(cnt[i]>0)
{
f++;
}
cout<<f<<endl;
if(cnt[i]>0)
{
cout<<i<<" "<<cnt[i]<<endl;
}
}
return 0;
}


选班委

题目描述

小T 和他的小伙伴们到CZ 中学的创新实验班报到后的第一件事就是选班委,班主任R 老师走上讲台宣布了选举办法,首先让全班40 位同学依次上讲台做自我介绍,然后按照职位一个一个依次进行选举,先选班长,再选学习委员......,选举办法是每人投一票,谁的票数最高就选谁担任这个职位,最后围棋高手小W 颇具大将风范被选为班长,学神小Z 当选为学习委员那是众望所归,小S 则有天生一副好嗓子,不但歌唱得好,并且能将多种动物的叫声模仿得惟妙惟肖,因此当选为文体委员。小T 同学在本次选举中负责计票,他觉得手工计票太慢了,且容易出错,因此想请你编一个程序实现机器计票功能。这个程序要能实现以下功能:全班共有n 个同学,依次用1 到n 编号,共有m 个人(包括班主任和任课老师等)参与了投票,每张选票上写有一个同学的编号,得票最多的同学当选。

输入

输入数据第一行包含两个用空格隔开的正整数n 和m,其中n≤200,m≤2000。

第二行有m 个用空格隔开的不超过n 的正整数,表示这m 张选票上所写的编号。

输出

输出得票最多的那个同学的编号。如果同时有两名以上同学得票最多,输出编号最小的那个同学的编号。

输入复制

3 4

1 3 2 1

输出复制

1

#include <iostream>
using namespace std;
int cnt[88];
int main()
{
int n;
cin>>n;
for(int i = 0;i<n;i++)
{
int a;
cin>>a;
cnt[a]++;
}
int f = 0;
for(int i = 0;i<88;i++)
{
if(cnt[i]>0)
{
f++;
}
cout<<f<<endl;
if(cnt[i]>0)
{
cout<<i<<" "<<cnt[i]<<endl;
}
}
return 0;
}

数字出现次数

题目描述

有50 个数(0∼19),求这50个数中相同数字出现的最多次数为几次?

输入

50 个数字。

输出

1 个数字(即相同数字出现的最多次数)。

输入复制

1 10 2 0 15 8 12 7 0 3 15 0 15 18 16 7 17 9 1 19 16 12 17 12 4 3 11 1 14 2 11 14 6 11 4 6 4 11 13 18 7 0 3 2 3 18 19 2 16

输出复制

4

​
#include <iostream>
using namespace std;
int cnt[19];
int main()
{
int n = 50;
for(int i = 0;i<n;i++)
{
int a;
cin>>a;
cnt[a]++;
}
int f;
for(int i = 0;i<30;i++)
{
if(cnt[i]<cnt[i+1])
{
f = cnt[i+1];
}
}
cout<<f;
return 0;
}

​


原文地址:https://blog.csdn.net/lybr513208/article/details/135718813

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!