[关闭]
@PaulGuan 2016-10-18T16:05:51.000000Z 字数 394 阅读 661

D - Permutation 题解

算法 题解


题目大意

有n个数 (1 ≤ n ≤ 5000),每个数的值为ai (1 ≤ ai ≤ 5000, 1 ≤ i ≤ n),求要让这n个数1-n每个出现一次,需要改动的数字的数量的最小值。

分析

用一个标记数组记录下哪些数出现过,然后输出1-n里面没有出现过的数的个数,输出即可。

代码

  1. #include <iostream>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5. bool num[5005];
  6. int main(void)
  7. {
  8. memset(num,false,sizeof(num));
  9. int n,ans=0,t;
  10. cin>>n;
  11. int i;
  12. for(i=1;i<=n;i++)
  13. {
  14. cin>>t;
  15. num[t]=true;
  16. }
  17. for(i=1;i<=n;i++)
  18. if(!num[i])
  19. ans++;
  20. cout<<ans<<endl;
  21. return 0;
  22. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注