题意:输入一串数值,且定下队列长度,依次输入数值,若达到最大存储范围,删去第一个数,在最后再存,若数值在队列中已经出现,则不需存下,若没有,则计数器加1,输出计数器的值。
本人完全按照题意来打代码,在此附上:
#include<bits/stdc++.h>
using namespace std;
int m,n,x,s,head,tail,q[10000005],c[1005];//s为计数器,q[]为队列,c用于判断输入值是否已经出现
int main(){
cin>>m>>n;
for(int i=1;i<=n;++i){
cin>>x;
if (c[x])continue;
else{
++s;
if (tail-head>=m){
++head;
--c[q[head]];
}
++c[x];
q[++tail]=x;
}
}
cout<<s<<endl;
return 0;
}看在我打了这么多的情况下,能否给个赞?



京公网安备 11010502036488号