- 问题描述:给定含有n个元素的多重集合S, 每个元素在S中出现的次数 称为该元素的重数。多重集中重数最大的元素称为众数。
例如,S={1,2,2,2,3,5}。S的众数是2,重数是3。 - 算法设计:对于给定的由n个自然数组成的多重集S,计算S的众数和重数
- 源程序
# include <stdio.h>
# include <malloc.h>
int main()
{
int N;
int **S;
int flag=1, sum=1;
printf("Input the number of the elements: ");
scanf("%d",&N);
S=(int **)malloc((N+1)*sizeof(int *));
for (int i=0; i<=N; ++i)
S[i]=(int *)malloc(3*sizeof(int));
printf("Enter each element:\n");
for (int i=1; i<=N; ++i)
{
scanf("%d", &S[i][0]);
S[i][1]=1;
S[i][2]=1 ;
}
for(int i=1; i<=N; ++i)
if(S[i][2]==1)
for (int j=i+1; j<=N; ++j)
if (S[i][0]==S[j][0])
{
S[i][1]++;
S[j][2]=0;
}
for (int i=1; i<=N; ++i)
{
if (S[i][1]>sum)
flag=i;
}
printf("\n%d\n%d",S[flag][0], S[flag][1]);
return 0;
}