题意:有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