@PaulGuan
2016-10-19T00:05:51.000000Z
字数 394
阅读 731
算法
题解
有n个数 (1 ≤ n ≤ 5000),每个数的值为ai (1 ≤ ai ≤ 5000, 1 ≤ i ≤ n),求要让这n个数1-n每个出现一次,需要改动的数字的数量的最小值。
用一个标记数组记录下哪些数出现过,然后输出1-n里面没有出现过的数的个数,输出即可。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
bool num[5005];
int main(void)
{
memset(num,false,sizeof(num));
int n,ans=0,t;
cin>>n;
int i;
for(i=1;i<=n;i++)
{
cin>>t;
num[t]=true;
}
for(i=1;i<=n;i++)
if(!num[i])
ans++;
cout<<ans<<endl;
return 0;
}