问题描述:给定含有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;
}
转载请注明原文地址: https://ju.6miu.com/read-666873.html