请问,这个程序有什么问题,请帮我精简一下
问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重
集S中重数最大的元素称为众数。
例如,S={1,2,2,2,3,5}。
多重集S的众数是2,其重数为3。
对于给定的由n 个自然数组成的多重集S,计算S的众数及其重数。
数据输入:
输入多重集S中元素个数n;接下来的n行中,每行有一个自然数。
结果输出:
输出第1行给出众数,第2 行是重数。
Sample Input
6
1
2
2
2
3
5
Sample Output
2
3
#include<stdio.h>
int main()
{
int a[100],n;
while(1==scanf("%d",&n))
{
int i,j,b[100],t;
for(i=0;i<n;i++)scanf("%d",&a[i]);
for(j=0;j<n-1;j++)
{
for(i=0;i<n-j-1;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
b[0]=1;
for(i=0;i<n;i++)
{
if(a[i+1]>a[i]) b[i+1]=1;
if(a[i+1]==a[i]) b[i+1]=b[i]+1;
}
int max=b[0],c;
for(i=1;i<n;i++)
{
if(b[i]>max) {max=b[i];c=i;}
}
printf("%d\n%d\n",a[c],max);
for(i=c+1;i<n;i++)
{
if(b[i]==max) printf("%d\n%d\n",a[i],b[i]);
}
}
return 0;
}
各位大哥大姐 帮忙看看 帮我精简一下 或者把你们的结果给我看看 谢过了!!!!!