习题5-7 打印队列
算法入门经典上的一道题,考察了stl模板的运用。利用c++自带的模板和函数有时会让问题简单化。这道题锻炼了vector数组的运用,包括遍历和取元素,元素的插入以及求最大值操作。代码如下,已经通过。
#include<bits/stdc++.h>
using namespace std;
vector<int>que;
int main(){
int n,a;
cin>>n;
while(n--){
int n,m,c=0,maxn=0;
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>a;
que.push_back(a);
}
vector<int>::iterator it=max_element(que.begin(),que.end());
maxn=*it;
while(que.size()!=0){
int first=que.front();
if(first==maxn&&m==0){
c++;
break;
}
else if(first==maxn&&m!=0){
que.erase(que.begin());
c++;
vector<int>::iterator it=max_element(que.begin(),que.end());
maxn=*it;
m--;
}
else if(first!=maxn&&m==0){
que.push_back(que.front());
que.erase(que.begin());
m=que.size()-1;
}
else{
que.push_back(que.front());
que.erase(que.begin());
m--;
}
}
cout<<c<<endl;
que.clear();
}
return 0;
}