基本队列操作
#include<iostream>
#include <queue>
using namespace std;
bool find(queue<int> q, int n)
{
bool flag=false;
int size = q.size();
for (int i=0; i <size; ++i)
{
int a = q.front();
if (a == n)
{
flag= true;
}
q.pop();
}
return flag;
}
int main()
{
int siz,n,a,count=0;
queue <int> b;
cin>>siz>>n;
for(int i=0;i<n;i++)
{
cin>>a;
if(!find(b,a))
{
count++;
if(b.size()<siz) b.push(a);
else {
b.pop();
b.push(a);
}
}
}
cout<<count;
}
另一种用双端队列的写法,调用了algorithm头文件的函数,显得简洁一些
#include<iostream>
#include <deque>
#include <algorithm>
using namespace std;
int main()
{
int siz,n,a,count=0;
deque <int> b;
cin>>siz>>n;
for(int i=0;i<n;i++)
{
cin>>a;
if(find(b.begin(),b.end(),a)==b.end())
{
count++;
if(b.size()<siz) b.push_back(a);
else {
b.pop_front();
b.push_back(a);
}
}
}
cout<<count;
}