题目链接:delete
题面:
4 1 3 1 2 1
3Hintif WLD deletes a 3, the numbers remain is [1,1,2],he‘ll get 2 different numbers. if WLD deletes a 2, the numbers remain is [1,1,3],he‘ll get 2 different numbers. if WLD deletes a 1, the numbers remain is [1,2,3],he‘ll get 3 different numbers.
解题:
利用set计数即可。
代码:
#include <iostream> #include <cmath> #include <set> using namespace std; int main() { int n,k,tmp,ans; while(scanf("%d",&n)!=EOF) { set <int> store; for(int i=1;i<=n;i++) { scanf("%d",&tmp); store.insert(tmp); } scanf("%d",&k); if(n==store.size()) { ans=n-k;//刚好,就直接减 } else { tmp=n-store.size();//可以不减少的前提下,提供的最大数量 if(tmp>=k)//够减,,数量不变 ans=store.size(); else //不够减,减去多余的后,再减种类数 ans=store.size()-(k-tmp); } printf("%d\n",ans); } return 0; }
原文地址:http://blog.csdn.net/david_jett/article/details/46368499