鸡蛋队列
来源:互联网 发布:windows pe 修改密码 编辑:程序博客网 时间:2024/04/30 08:13
鸡蛋队列
- 描述
将两根筷子平行的放在一起,就构成了一个队列。将带有编号的鸡蛋放到两根筷子之间叫做入队(push),将筷子之间的鸡蛋拿出来叫做出队(pop)。但这两种方式有特殊的定义,对于入队,只能将鸡蛋从队列的尾部向里放入;对于出队,只能将鸡蛋从队列的头部向外将鸡蛋拿出来。
将①、②入队:
头____________尾 _____________ ______________
← ① ← ② ① ← ② ① ②
______________ _____________ ______________
将①、②出队:
头____________尾 ______________ ______________
← ① ← ② ① ← ② ① ②
______________ ______________ ______________
输入
- 第一行输入一个数T,表示有T组数据
第二行输入一个数N,表示有N(N<=10)种操作
接下来N行,每行一种操作,push表示将编号为x的鸡蛋放入队列中,pop表示拿走队列头部的一个鸡蛋。
数据输入保证合法,队列中没有鸡蛋时不会有出队操作! - 输出
- 输出N种操作完之后,队列中蛋蛋的编号,如果没蛋了,就输出"no eggs!"(不包括引号)每组输出占一行。
- 样例输入
23push 1 push 2push 32push 1pop
- 样例输出
1 2 3no 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
- 第一行输入一个数T,表示有T组数据
- 鸡蛋队列
- 鸡蛋队列
- 鸡蛋队列
- NYOJ I. 鸡蛋队列
- 1117 鸡蛋队列【模拟队列】
- nyoj1117 鸡蛋队列 (双端队列,deque)
- 鸡蛋
- 画鸡蛋
- 鸡蛋相关
- 鸡蛋做法
- 属性【鸡蛋】
- 鸡蛋饭
- 鸡蛋饭
- 鸡蛋饭
- 鸡蛋饭
- 鸡蛋饭
- 鸡蛋饭
- 鸡蛋饭
- PAT 1014 福尔摩斯的约会
- Java String的split操作
- 三分搜索法
- 关于VB选择打印机,并打印
- cc2530裸机编程系列笔记6--外中断程序(转载)
- 鸡蛋队列
- 3116 高精度练习之加法
- 通过接口加载网络数据 (解析数据)
- POJ2481 Cows 树状数组
- 我的第一个博客
- SQLite 学习
- Android消息机制 Handler源码分析
- maven的配置及示例
- sscanf 编