题意:有n个数(a1,a2,...,an),进行k次删除一个数的操作,使得剩下的n-k个数中有最多的不同的种数。输出最多剩下的不同的数的种数。
#include<iostream>
using namespace std;
int main()
{
int map[105];
int i,n,k,sum,a;
while(cin>>n)
{
sum=0;
memset(map,0,sizeof(map));
for(i=0;i<n;i++)
{
cin>>a;
if(!map[a]) sum++; //sum是不同的数的种数
map[a]++;
}
cin>>k;
k-=(n-sum);
if(k<=0) //删除k个数后种数没有减少
cout<<sum<<endl;
else //种数减少
cout<<sum-k<<endl;
}
return 0;
}
原文地址:http://blog.csdn.net/a809146548/article/details/46360767