作业-数组计数法
目录
数字出现次数
题目描述
有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)!