递归与分治2

众数问题:给定含有N个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,多重集合S中重数最大的元素称为多重集合S的众数,众数的重数称为多重集合S的重数,试求一个给定多重结合的重数和众数;

例如:S={a,b,b,b,f,f,4,5}的重数是3,众数是

import java.util.*;
public class ZS{
public static void main(String[] arg){
int n,m;
int[] num=new int[101];
int[] count=new int[101];
Scanner input=new Scanner(System.in);
n=input.nextInt();
for(int l=0;l<n;l++){
m=input.nextInt();
for(int i=0;i<m;i++){
num[i]=input.nextInt();//元素值
count[i]=1;
}
if(m==1){
System.out.println(num[0]+" 1"); 
continue;
}
for(int i=0;i<m-1;i++){//count数组用来存放该元素出现的次数
for(int j=i+1;j<m;j++){
if(num[i]==num[j]) count[i]+=1;
}
}
int max=count[0];
int flag=0;
for(int i=1;i<m;i++){//选择出现次数最大的元素
if(count[i]>max){
max=count[i];
flag=i;
}
}
System.out.println(num[flag]+" "+count[flag]);//输出众数和重数
}
}
}
原文地址:https://www.cnblogs.com/ljs-666/p/7899158.html