题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5210
Delete
解题思路:
用一个 cnt 数组记下每个数在 a 序列中出现了几次 在删数的时候贪心,尽可能删那些出现次数 >1 的数 这样就可以使最后有最多不同的数
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
int a[110];
while(scanf("%d",&n)!=EOF)
{
int i,j,x,cnt=0;
for(i=0;i<n;i++)
{
scanf("%d",&x);
for(j=0;j<cnt;j++)
if(a[j]==x)
break;
if(j==cnt)
{
a[cnt]=x;
cnt++;
}
}
int k;
scanf("%d",&k);//k,n-cnt
if(k<n-cnt)
printf("%d\n",cnt);
else
printf("%d\n",n-k);
}
return 0;
}