做数据结构模拟题最重要的就是理清楚自己的思路,不要一味地堆叠if else 一定要思路清晰,代码简练。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<stack>
using namespace std;
queue<int> pu;
stack<int> box;
int main()
{
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
pu.push(x);
}
int num=0,last=1000;
while(pu.size())
{
if(box.size()&&box.top()<=last)
{
if(num==0) cout<<box.top();
else cout<<' '<<box.top();
last = box.top();
num+=1;
box.pop();
}
else if(pu.front()<=last)
{
if(num==0) cout<<pu.front();
else cout<<' '<<pu.front();
last = pu.front();
num+=1;
pu.pop();
}
else if(box.size()<m)
{
box.push(pu.front());
pu.pop();
}
if(num==k||(box.size()==m&&pu.front()>last&&box.top()>last))
{
cout<<endl;
num=0;
last=1000;
}
}
while(box.size())
{
if(box.top()<=last&&num<k)
{
if(num) cout<<' '<<box.top();
else cout<<box.top();
last = box.top();
num+=1;
box.pop();
}
else
{
cout<<endl;
num=0;
last=1000;
}
}
return 0;
}
|