环境vs2010
/ Test.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; class Node{ public: int value; int n; Node(){value=0;n=0;} }; int find(Node a[],int n,int x)//放回为n则没有找到,<n则找到 { int i=0; for(;i<n;i++){if(x==a[i].value){return i;}} return i; } void findN(Node a[],int n,int x,int b[],int &nn)//b记录node.n=x的数的下标 { int i=0,j=0; //int* b=new int[n]; for(;i<n;i++){if(x==a[i].n){b[j++]=i;}} nn=j; //return i; } void insert(Node a[],int n,int x) { a[n].value=x;a[n].n++; } void fun(int a[],int n) //输出数组中出现次数最多的数(若有次数相同的,输出value较小的) { int i=0,j=0;//j为temp数组元素的个数 Node temp[100]; temp[0].value=a[0]; temp[0].n=1; j++; int f=0; for(i=1;i<n;i++) { f=find(temp,j,a[i]); if(f<j){(temp[f].n)++;} else{insert(temp,j,a[i]);j++;} } int max=temp[0].n; int m=0;//m为个数最多的数的下标 for(i=1;i<j;i++) { if(temp[i].n>max) { max=temp[i].n;m=i; } } cout<<"相同的数的个数最多为:"<<max<<endl; int tempN[10]={0},nn=0; findN(temp,j,max,tempN,nn); int min=temp[tempN[0]].value; for(i=0;i<nn;i++)//从几个个数相同的数中找到最小的一个值 { if(temp[tempN[i]].value<min){min=temp[tempN[i]].value;} } cout<<"个数最多的数中最小的为:"<<min<<endl; //cout<<temp[m].value<<endl; } int _tmain(int argc, _TCHAR* argv[]) { int a[]={1,2,1,4,1,6,1,3,4,6,7,1,3,1,5,6,6,7,6,6,6,1}; fun(a,22); return 0; }
本文出自 “学习党” 博客,请务必保留此出处http://lyunfan.blog.51cto.com/6649420/1369535
从一组数中找到出现次数最多的,若有出现次数相同的,输出值小的那个,布布扣,bubuko.com
从一组数中找到出现次数最多的,若有出现次数相同的,输出值小的那个
原文:http://lyunfan.blog.51cto.com/6649420/1369535