问题描述:给定含有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][0]存储数据 S[i][1]=1; //S[i][1]存储元素重复个数,包含自己 S[i][2]=1 ; //S[i][2]存储元素的状态 } 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; }