众数问题
问题描述:
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。 ★算法设计:对于给定的由n个自然数组成的多重集S,计算S的众数及其重数。★数据输入:输入数据由文件名为input.txt的文本文件提供。文件的第1行为多重集S中的元素个数n;在接下来的n行中,每行有一个自然数。 ★结果输出: 将计算结果输出到文件output.txt。输出文件有2行,第一行是众数,第2行是重数
源程序:
#include<stdio.h> int main() { intn,i; scanf("%d",&n); inta[n]= {0}; for(i=0;i<n; i++) scanf("%d",&a[i]); for(inti=0; i<n; i++) for(intj=0; j<n-i-1; j++) { if(a[j]>a[j+1]){ intswap=a[j]; a[j]=a[j+1]; a[j+1]=swap; } } intflag=a[0]; intmax=1,maxA; intnum=1; for(i=1;i<n; i++) { if(flag==a[i]){ ++num; if(num>max){ max=num; maxA=a[i]; } }else { flag=a[i]; } } printf("众数:%d重数:%d\n",maxA,max); return0; }
网络代码:
#include <stdio.h> int main() { inti,j,Count=0,index=0,nCount=0; intn; scanf("%d",&n); inta[n]; for(i=0;i<n; i++) { scanf("%d",&a[i]); } for(i=0;i<n; i++) { for(j=0;j<n; j++) { if(a[j]==a[i]) nCount++; } if(nCount>Count){ Count=nCount; index=i; } nCount=0; } printf("%d\n%d",a[index],Count); }