就是一个map水题,只要统计等级相同的最大人数就行了,因为相同等级的不可能在一起。
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n,a,i,max;
map<int,int>m;
while(scanf("%d",&n)!=EOF)
{
max=0;
m.clear();
for(i=0;i<n;i++)
{
scanf("%d",&a);
m[a]++;
if(m[a]>max)
max=m[a];
}
printf("%d\n",max);
}
return 0;
}
/*假设有若干个飞行员,{{A1,A2,A3...AK},{B1,B2,B3,...Bm}......{F1,F2,F3.....Fn}}
。其已经按照等级由低到高排好序,在同一个集合里的飞行员等级相同。若需要最少数
目的扫帚,则只能是{A1,B1.....F1},{A2,B2....F2}..这样进行组合,扫帚数目最少
。因此决定所需最少扫帚数目的集合是含有飞行员最多的集合,即同一等级数目最多
的飞行员集合。因此可以采用STL中的map直接实现。*/