hdoj 1702 ACboy needs your help again!【数组模拟+STL实现】
2015-06-10 23:15
459 查看
ACboy needs your help again!
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4241 Accepted Submission(s):
2164
[align=left]Problem Description[/align]
ACboy was kidnapped!!
he miss his mother very much
and is very scare now.You can't image how dark the room he was put into is, so
poor :(.
As a smart ACMer, you want to get ACboy out of the monster's
labyrinth.But when you arrive at the gate of the maze, the monste say :" I have
heard that you are very clever, but if can't solve my problems, you will die
with ACboy."
The problems of the monster is shown on the wall:
Each
problem's first line is a integer N(the number of commands), and a word "FIFO"
or "FILO".(you are very happy because you know "FIFO" stands for "First In First
Out", and "FILO" means "First In Last Out").
and the following N lines, each
line is "IN M" or "OUT", (M represent a integer).
and the answer of a problem
is a passowrd of a door, so if you want to rescue ACboy, answer the problem
carefully!
[align=left]Input[/align]
The input contains multiple test cases.
The first
line has one integer,represent the number oftest cases.
And the input of each
subproblem are described above.
[align=left]Output[/align]
For each command "OUT", you should output a integer
depend on the word is "FIFO" or "FILO", or a word "None" if you don't have any
integer.
[align=left]Sample Input[/align]
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
[align=left]Sample Output[/align]
1
2
2
1
1
2
None
2
3
#include<stdio.h> #include<string.h> int main() { int n,m,j,i,sum,t,k,top; char a[5]={"FIFO"}; char b[5]={"FILO"}; char d[5]={"IN"}; char e[5]={"OUT"}; char s[5]; char c[5]; int zhan[1100]; scanf("%d",&t); while(t--) { scanf("%d",&n); scanf("%s",s); top=0;k=0; for(i=0;i<n;i++) { scanf("%s",c); if(strcmp(c,d)==0) //如果输入的字符串为IN { scanf("%d",&m); //则输入其后的数字并存入栈中 zhan[top++]=m; } else if(strcmp(c,e)==0) //如果输入字符串为OUT { if(strcmp(s,b)==0) //则判断字符串s是 FIFO还是FILO即是先进先出还是先进后出 { //此处为先进后出 if(top>0) //如果栈不为空 { printf("%d\n",zhan[top-1]);//则输出栈尾元素 top--; //并删除此元素 } else if(top<=0) printf("None\n");//如果栈为空则输出None } else if(strcmp(s,a)==0) { if(k<top) //如果k<top即栈不为空 { printf("%d\n",zhan[k++]);//输出栈首元素并删除 } else if(k>=top) //如果栈为空 printf("None\n");//则输出None } } } } return 0; }
STL:
#include<stdio.h> #include<string.h> #include<stack> #include<queue> #define MAX 1100 using namespace std; char s1[MAX]; char str1[5]={"IN"}; char str4[5]={"FILO"}; int main() { int n,m,j,i,t,k,l; int a,b; char str[MAX]; stack<int>s; queue<int>q; scanf("%d",&t); getchar(); while(t--) { scanf("%d%s",&n,str); a=0; if(strcmp(str,str4)==0) { while(n--) { scanf("%s",s1); //scanf("%s %d",s1,&m); if(strcmp(s1,str1)==0) { scanf("%d",&m); s.push(m); } else { if(s.empty()) { printf("None\n"); continue; } a=s.top(); printf("%d\n",a); s.pop(); } } while(!s.empty()) { s.pop(); } } else { while(n--) { scanf("%s",s1); //scanf("%s %d",s1,&m); if(strcmp(s1,str1)==0) { scanf("%d",&m); q.push(m); } else { if(q.empty()) { printf("None\n"); continue; } a=q.front(); printf("%d\n",a); q.pop(); } } while(!q.empty()) q.pop(); } } return 0; }
相关文章推荐
- ubuntu14.04 安装PIL库出现OError: decoder jpeg not available 的解决方案
- postfix收发邮件大小和webmail空间大小设定
- Training:母函数
- sendmai和dovecot的简单邮件服务器
- Training:筛选法与预处理
- Contains Duplicate II
- 回收子进程函数waitpid详解
- HDU 1532Drainage Ditches(最大流模板题 ISAP)
- 219Contains Duplicate II
- VS 2012 No exports were found that match the constraint 解决办法
- WSAIoctl 函数详解
- Training:动态规划
- RAID磁盘阵列
- RevitAPI: 创建四通失败CrossFitting - InvalidOperationException: failed to insert cross.
- [leetcode 11]Container With Most Water
- 贪心 Codeforces Round #173 (Div. 2) B. Painting Eggs
- Failure [INSTALL_FAILED_OLDER_SDK]
- 技术团队如何招聘和管理,如何避免低效率的官僚作风,来看看Airbnb的经验
- Opencv研读笔记:haartraining程序之icvCreateCARTStageClassifier函数详解~
- Factorial Trailing Zeroes-Leetcode