[2010提高组-A]机器翻译

it2022-05-05  105

基本队列操作

#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;     } 

 

 


最新回复(0)