首先,观察题目。
仅能容纳一本书的宽度,但高度足够。
并将其堆叠在空间最上方。
阅读当前堆叠在空间最上方的书,然后将其归还图书馆。
可以看到,空间只能容纳一本书的宽度,且所有对空间的操作都是在最上方进行的。这两点和栈是一样的。因此,我们可以把这个空间看成一个栈,栈里存的是书名。
只要想到这里,用栈模拟就可以 AC 了。
需要注意的是,不一定所有的书都要被取出。题目给出的两个样例可以说明。
AC 代码
#include<bits/stdc++.h>
using namespace std;
stack<string> s;
int main(){
int q;
scanf("%d",&q);
while(q--){
string st;
cin >> st;
if(st=="READ"){
cout << s.top() <<endl;//输出书名
s.pop();//归还图书馆
}else{
s.push(st);//堆叠在空间最上方
}
}
return 0;
}
浙公网安备 33010602011771号