其实这个题不需要循环队列,直接模拟即可。唉,我用一次违背了KISS原则——我用了循环队列——害得我还调试了一会。
SUBMIT URL:http://www.rqnoj.cn/Problem_Rating.asp?PID=598
/*
* NOIP-2010 a.机器翻译
* mike-w
* --------------------
* 循环队列
*/
#include<stdio.h>
#define SIZE 1111
int mem,nword;
int dict[SIZE];
int head,tail,ne;
int cnt;
int update(int e)
{
int t=head,i;
for(i=0;i<ne;i++)
{
if(dict[t]==e)
return 0;
t++;
if(t==mem)
t=0;
}
if(ne==mem)
head++;
else
ne++;
if(head==mem)
head=0;
dict[tail++]=e;
if(tail==mem)
tail=0;
return 1;
}
int main(void)
{
int i,t;
/* freopen("2010a.in","r",stdin); */
scanf("%d%d",&mem,&nword);
for(i=0;i<nword;i++)
{
scanf("%d",&t);
cnt+=update(t);
}
printf("%d\n",cnt);
return 0;
}