文章目录
一、题目二、算法思路三、代码
一、题目
二、算法思路
题目要求的是多个数字中出现次数最多的一个,这道题如果采用字典为存储结构的话会更加容易解决,我之前没接触c++的字典结构,就用其他方法来解决一下。
存储结构采用的是数组,有两个数组分别为number和time,number用于存储数字,time用于存储数组中各个元素出现的次数。 计算各个数字出现次数使用的是双重循环,在计算第i个元素时,就再次在原数组中重判断一遍将该元素出现的次数记录下来
之后就是从中找出次数最大的一个数,以案例中的这十个数3 2 -1 5 3 4 3 0 3 2为例,对应的次数如下图,因为相同数字对应的次数是一样的,所以查找时直接遍历time数组找最大的数和次数即可。
三、代码
#include<iostream>
using namespace std
;
int main(){
int N
,i
,j
;
int number
[1002];
cin
>>N
;
for(i
=1;i
<=N
;i
++)
cin
>>number
[i
];
int time
[1000]={0};
for(i
=1;i
<=N
;i
++){
int now
= 0;
for(j
=1;j
<=N
;j
++){
if(number
[i
]==number
[j
])
now
++;
}
time
[i
]=now
;
}
int most
= number
[1];
int most_number
= time
[1];
for(i
=1;i
<=N
;i
++){
if(most_number
<time
[i
]){
most
= number
[i
];
most_number
= time
[i
];
}
}
cout
<<most
<<" "<<most_number
<<endl
;
return 0;
}