鸡蛋队列
2015-12-07 21:18
211 查看
鸡蛋队列
时间限制:1000 ms | 内存限制:65535 KB难度:1描述将两根筷子平行的放在一起,就构成了一个队列。将带有编号的鸡蛋放到两根筷子之间叫做入队(push),将筷子之间的鸡蛋拿出来叫做出队(pop)。但这两种方式有特殊的定义,对于入队,只能将鸡蛋从队列的尾部向里放入;对于出队,只能将鸡蛋从队列的头部向外将鸡蛋拿出来。将①、②入队:头____________尾 _____________ ______________← ① ← ② ①← ② ①②______________ ___________________________将①、②出队:头____________尾 ______________ ______________← ① ← ② ①← ②① ②______________ ____________________________输入第一行输入一个数T,表示有T组数据第二行输入一个数N,表示有N(N<=10)种操作接下来N行,每行一种操作,push表示将编号为x的鸡蛋放入队列中,pop表示拿走队列头部的一个鸡蛋。数据输入保证合法,队列中没有鸡蛋时不会有出队操作!输出输出N种操作完之后,队列中蛋蛋的编号,如果没蛋了,就输出"no eggs!"(不包括引号)每组输出占一行。样例输入2 3 push 1 push 2 push 3 2 push 1 pop样例输出
1 2 3 no eggs!
设鸡蛋放入队列为x,输入一次push,x自增;从队头拿出鸡蛋为y,输入一次pop,y自增;最后若x==y,鸡蛋就取完了,否则就将y到x之间的鸡蛋编号输出来。因为是用队列进行操作,先进先出,最后还在队列中的就是y~x了。
我的代码:
#include<stdio.h>#include<string.h>int main(){int t, n, m;scanf("%d", &t);while(t--){char s[5];int a[20], x = 0, y = 0;memset(a, 0, sizeof(a));scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%s", s);if(strcmp(s, "push") == 0){scanf("%d", &m);a[x] = m;x++;}else {y++;}}if(x == y)printf("no eggs!\n");else{for(int i = y; i < x; i++){printf("%d ", a[i]);}printf("\n");}}return 0;}
http://acm.nyist.net/JudgeOnline/problem.php?pid=1117
相关文章推荐
- 关于VB选择打印机,并打印
- 通过接口加载网络数据 (解析数据)
- 家庭反对死一批,朋友同事嘲笑死一批,害怕失败死一批,徘徊等待死一批「没有时间」又死一批(转)
- IOS -多线程 - GCD - 初识
- 我的Android进阶之旅------>Java字符串格式化方法String.format()格式化float型时小数点变成逗号问题
- Qt 分组布局
- UI手势
- 加载第三方图片
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- Unity3d + NGUI 多分辨率适应
- Cocos2D-Android-1之源码详解:1.Cocos2D
- 虚函数,纯虚函数讲解
- ORA-12705: 无法访问 NLS 数据文件, 或者指定的环境无效
- Java基础_03_Java数组
- UIView你知道多少
- Android - Menus
- 用 WEKA 进行数据挖掘(参考链接整理)
- Kafka学习6_关于Kafka 的消息日志Offset 的了解
- 如水的夜,似铁的心
- my blog