【九度OJ】题目1108:堆栈的使用 解题报告

标签(空格分隔): 九度OJ


http://ac.jobdu.com/problem.php?pid=1108

题目描述:

堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。

输入:

对于每组测试数据,第一行是一个正整数 n,0<n<=10000(n=0 结束)。
而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;
如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;
如果是'O’,表示将栈顶的值 pop 出来,如果堆栈中没有元素时,忽略本次操作;
如果是'A’,表示询问当前栈顶的值,如果当时栈为空,则输出'E'。
堆栈开始为空。

输出:

对于每组测试数据,根据其中的命令字符来处理堆栈;并对所有的’A’操作,输出当时栈顶的值,每个占据一行,如果当时栈为空,则输出’E’。当每组测试数据完成后,输出一个空行。

样例输入:

3
A
P 5
A
4
P 3
P 6
O
A
0

样例输出:

E
5 3

Ways

堆栈的题目。

这个题目,很简单,只要按照规定去读和输出即可。

我写了几遍都是WA,最后仔细排查才发现,如果是A的话,不应该pop。

所以审题一定要仔细。

#include <stdio.h>
#include <stack>
#include <iostream> using namespace std; int main() {
int n; while (scanf("%d", &n) != EOF && n != 0) {
char op;
stack<int> S;
for (int i = 0; i < n; i++) {
cin >> op;
if (op == 'A') {
if (S.empty()) {
cout << "E" << endl;
} else {
cout << S.top() << endl;
//S.pop(); #之前的错误。题目没要求弹出栈顶。
}
} else if (op == 'P') {
int oper;
cin >> oper;
S.push(oper);
} else if (op == 'O') {
if (!S.empty()) {
S.pop();
}
}
}
cout << endl;
}
return 0;
}

Date

2017 年 3 月 2 日

【九度OJ】题目1108:堆栈的使用 解题报告的更多相关文章

  1. 九度oj 题目1108:堆栈的使用

    题目描述: 堆栈是一种基本的数据结构.堆栈具有两种基本操作方式,push 和 pop.Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出.现在我们就来验证一下堆栈的使用. 输入: 对于每组测 ...

  2. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  3. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  4. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  6. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  7. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  8. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  9. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

  10. 九度OJ题目1003:A+B

    while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...

随机推荐

  1. R语言与医学统计图形【6】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...

  2. MariaDB—备份数据库

    1> 备份单个数据库 mysqldump -uroot -plichao123 --database students1 > stundents.sql; 2>查看备份文件 3> ...

  3. YARP+AgileConfig 5分钟实现一个支持配置热更新的代理网关

    YARP 是微软开源的一个反向代理项目,英文名叫 Yet Another Reverse Proxy .所谓反向代理最有名的那就是 nginx 了,没错 YARP 也可以用来完成 nginx 的大部分 ...

  4. day22面向对象编程思想

    day22面向对象编程思想 1.面向过程 面向过程: 核心是"过程"二字 过程的终极奥义就是将程序流程化 过程是"流水线",用来分步骤解决问题的 面向对象: 核 ...

  5. Hive(六)【分区表、分桶表】

    目录 一.分区表 1.本质 2.创建分区表 3.加载数据到分区表 4.查看分区 5.增加分区 6.删除分区 7.二级分区 8.分区表和元数据对应得三种方式 9.动态分区 二.分桶表 1.创建分桶表 2 ...

  6. 【Reverse】初遇花指令

    解密花指令 全文参考了一个大师傅的blog:https://blog.csdn.net/zhangmiaoping23/article/details/38400393 介绍 花指令是对抗反汇编的有效 ...

  7. 转 proguard 混淆工具的用法 (适用于初学者参考)

    转自:https://www.cnblogs.com/lmq3321/p/10320671.html 一. ProGuard简介 附:proGuard官网 因为Java代码是非常容易反编码的,况且An ...

  8. GO并发相关

    锁的使用 注意要成对,重点是代码中有分支或者异常返回的情况,这种情况要在异常返回前先释放锁 mysqlInstanceLock.Lock() slaveHostSql := "show sl ...

  9. 如何设置eclipse下查看java源码

    windows--preferences--java--installed jres --选中jre6--点击右边的edit--选中jre6/lib/rt.jar --点击右边的 source att ...

  10. Java 使用slf4j记录日志

    引入依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12< ...