题目:
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。
对于给定的由n个自然数组成的多重集S,计算S的众数及其重数。
思路1:
利用数组下标
将数字的大小与数字下标一一对应,每个数字的个数存入对应下标的数组中
代码(C++):
//众数问题解法1:使用数组下标
#include <iostream>
using namespace std;
int main(){
//手动输入众数数组大小
int m;
cout<<"input arrSize:";
cin>>m;
//创建众数数组并手动输入值
int* arr=new int[m];
cout<<"input arrNumber:";
for(int i=0;i<m;i++){
cin>>arr[i];
}
//创建保存众数及其重数的数组
int* result=new int[m];
for(int i=0;i<m;i++){
result[i]=0;
}
//保存众数及其重数
for(int i=0;i<m;i++){
result[arr[i]]+=1;
}
//获取众数及其重数
int max=0,index=-1;
for(int i=0;i<m;i++){
if(result[i]>max){
max