ACboy 再次需要你的帮助
2016-04-29 20:26
567 查看
ACboy 再次需要你的帮助
Description
对于每一个样例,第一行是N和一个字符串”FIFO”或者”FILO”(FIFO表示先进先出,即队列;FILO表示先进后出,即栈,),N表示命令的个数,下面有N行,每一行表示一个命令。命令分为两种,IN a 表示进去一个a,OUT表示出一个对头元素或者栈顶元素。
Input
第一行是一个数字T,表示样例的个数,对于每一个样例,如题目所述。
Output
对于每一个OUT命令,你要根据”FIFO”和”FILO”单独一行输出一个数字,或者输出None如果没有整数了。
Sample Input
4
4 FIFO
IN 1
IN 2
OUT
OUT
4 FILO
IN 1
IN 2
OUT
OUT
5 FIFO
IN 1
IN 2
OUT
OUT
OUT
5 FILO
IN 1
IN 2
OUT
IN 3
OUT
Sample Output
1
2
2
1
1
2
None
2
3
题目链接:
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
看灰机
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
【题目分析】
此题又要用队列,又要用栈,还要用string,好复杂啊,感觉是STL的综合
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/wail.gif)
首先要判断是用队列还是用栈来存储,所以要比较与题目要求的字符串的情况,用 到了string容器的比较函数,然后再判断是输入“IN”还是输出“OUT”,如果输 入就存储下来,输出就判断是否为空,为空输出“None”,不为空就输出栈顶,删除
栈顶或输出队首,删除队尾。
【解题代码】
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 169 | Accepted: 86 |
对于每一个样例,第一行是N和一个字符串”FIFO”或者”FILO”(FIFO表示先进先出,即队列;FILO表示先进后出,即栈,),N表示命令的个数,下面有N行,每一行表示一个命令。命令分为两种,IN a 表示进去一个a,OUT表示出一个对头元素或者栈顶元素。
Input
第一行是一个数字T,表示样例的个数,对于每一个样例,如题目所述。
Output
对于每一个OUT命令,你要根据”FIFO”和”FILO”单独一行输出一个数字,或者输出None如果没有整数了。
Sample Input
4
4 FIFO
IN 1
IN 2
OUT
OUT
4 FILO
IN 1
IN 2
OUT
OUT
5 FIFO
IN 1
IN 2
OUT
OUT
OUT
5 FILO
IN 1
IN 2
OUT
IN 3
OUT
Sample Output
1
2
2
1
1
2
None
2
3
题目链接:
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
看灰机
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
【题目分析】
此题又要用队列,又要用栈,还要用string,好复杂啊,感觉是STL的综合
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/wail.gif)
首先要判断是用队列还是用栈来存储,所以要比较与题目要求的字符串的情况,用 到了string容器的比较函数,然后再判断是输入“IN”还是输出“OUT”,如果输 入就存储下来,输出就判断是否为空,为空输出“None”,不为空就输出栈顶,删除
栈顶或输出队首,删除队尾。
【解题代码】
#include<stack> #include<queue> #include<iostream> #include<string> using namespace std; int main() { int t; cin>>t; while(t--) { int i,a,n; string s,s1; stack<int>st; queue<int>q; cin>>n>>s; if(s.compare("FIFO")==0) // 判断是用栈还是用队列 { for(i=0;i<n;i++) { cin>>s1; if(s1.compare("IN")==0) // 判断是输入还是输出 { cin>>a; q.push(a); // 插入a } else { if(q.size()==0) // 如果队列为空 cout<<"None"<<endl; else { cout<<q.front()<<endl; // 读取队首元素 q.pop(); // 删除队首元素 } } } } else // 如果不是用队列则用栈来做 { for(i=0;i<n;i++) { cin>>s1; if(s1.compare("IN")==0) // 判断是否输入 { cin>>a; st.push(a); // 入栈 } else { if(st.size()==0) // 判断栈是否为空 cout<<"None"<<endl; else { cout<<st.top()<<endl; st.pop(); } } } } } return 0; }代码自己打的,应该很复杂,大神可留言指点。
相关文章推荐
- hdu 1789 Doing Homework again
- 协方差矩阵计算
- 个人冲刺09
- Android 沉浸式状态栏 实现方式二 ( 更简单 )
- 2016/04/29 ①cms分类 ② dede仿站制作 步骤 十个步骤 循环生成菜单 带子菜单的菜单 标签 栏目 栏目内容列表 内容图片列表
- 不能被综合的Verilog语言——非静态循环
- 总结javaweb 目录结构
- php无限分类形成列表树并显示子栏目总数
- 广度优先搜索
- MySQL 中的数据类型介绍
- 第九周进度条
- matlab如何保存figure中去掉白边的图片
- 个人冲刺08
- 看了淘宝的商业模式分析
- uC/OS 的进程调度(上)
- Linux下的softlink和hardlink(转)
- 最短路径算法-Dijkstra算法的应用之单词转换(词梯问题)
- 2016/04/29 smarty模板 1, 初步 目标 : 变量 运算符 表达式 流程控制 函数
- POJ2195 Going Home
- 文本文件格式浅析以及转换