本题网站连接
这题是一道简单模拟运算的题,思路很好想,并不难但很容易一个点给坑到:数据输入可以为0!!!因为我习惯将数组a初始化为0,并用0来作为判断条件,所以某些情况会输出错误,所以wa了两次。
教训:遇到出入情况有0的情况慎重考虑是否要以0为判断条件和将数组初始化为0.(最后附上AC代码)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[1010];
int b[1010];
int main()
{
memset(a,-1,sizeof(a));
int m,n,cnt = 0,ind = 0,nums = 0;
scanf("%d%d",&m,&n);
for(int i = 0;i<n;i++)
{
scanf("%d",&b[i]);
if(a[b[i]]==-1)
{
if(cnt<m){
a[b[i]] = 1;
cnt++;
nums++;
}
else{
while(b[ind]==-1){
ind++;
}
a[b[ind]] = -1;
a[b[i]] = 1;
ind++;
nums++;
}
}
else
b[i]=-1;
}
printf("%d",nums);
return 0;
}