DS实验题 word
题目:
代码:
//
// main.cpp
// word
//
// Created by wasdns on 16/11/11.
// Copyright © 2016年 wasdns. All rights reserved.
//
#include <iostream>
#include <string>
#include <string.h>
#include <cstdio>
#include <stack>
#include <cstdlib>
using namespace std;
string store[10005]; //存储输出的字符串
/*
输出函数PrintStack:
先将栈中元素存到store数组中,再逆序输出数组中元素。
*/
void PrintStack(stack<string> ins)
{
int cnt = 1;
while (!ins.empty()) {
store[cnt++] = ins.top();
ins.pop();
}
for (int i = cnt-1; i > 0; i--) {
cout << store[i] << " ";
}
cout << endl;
}
int main()
{
int i, n;
stack<string> ins, temp; //字符串栈,ins为题目中的word栈
//temp为被ctrl+z操作弹出的字符串
cin >> n;
getchar();
for (i = 0; i < n; i++)
{
string statement; //输入的字符串
cin >> statement;
if (statement == "ctrl+z") //当字符串为ctrl+z时
{
if (!ins.empty()) { //且ins栈不为空时
temp.push(ins.top());
ins.pop(); //从ins栈中弹出一个字符串并压入temp
continue;
}
}
else if (statement == "ctrl+y") //当字符串为ctrl+y时
{
if (!temp.empty()) { //且temp栈不为空的时候
ins.push(temp.top());
temp.pop(); //从temp栈中弹出一个字符串并压入ins
}
else continue;
}
else if (statement[0] == 'i') //当进行input操作时
{
string str;
cin >> str;
ins.push(str); //将字符串压入ins栈
while (!temp.empty()) { //按照题目要求,将temp栈清空
temp.pop();
}
}
}
//输出:
if (ins.empty())
cout << "No output" << endl;
else
PrintStack(ins);
return 0;
}
结果:
结论:
这道题目,逻辑主线相对较为清晰,但是需要注意对状态的保存(需要再维护一个栈,保存delete操作弹出的字符串)。
之前没有AC的原因也是因为忽略了上面这一点,只对最近一次弹出的字符串进行保存,一旦出现如下情况:
6
input a
input b
ctrl+z
ctrl+z
ctrl+y
ctrl+y
输出为b,但是正确的答案应该是b a
2016/11/11
DS实验题 word的更多相关文章
- DS实验题 融合软泥怪-2 Heap实现
题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert) ...
- DS实验题 Old_Driver UnionFindSet结构 指针实现邻接表存储
题目见前文:DS实验题 Old_Driver UnionFindSet结构 这里使用邻接表存储敌人之间的关系,邻接表用指针实现: // // main.cpp // Old_Driver3 // // ...
- DS实验题 Dijkstra算法
参考:Dijkstra算法 数据结构来到了图论这一章节,网络中的路由算法基本都和图论相关.于是在拿到DS的实验题的时候,决定看下久负盛名的Dijkstra算法. Dijkstra的经典应用是开放最短路 ...
- DS实验题 sights
算法与数据结构实验题 6.3 sights ★实验任务 美丽的小风姑娘打算去旅游散心,她走进了一座山,发现这座山有 n 个景点, 由于山路难修,所以施工队只修了最少条的路,来保证 n 个景点联通,娇弱 ...
- DS实验题 order
算法与数据结构 实验题 6.4 order ★实验任务 给出一棵二叉树的中序遍历和每个节点的父节点,求这棵二叉树的先序和后序遍历. ★数据输入 输入第一行为一个正整数n表示二叉树的节点数目,节点编号从 ...
- DS实验题 Order 已知父节点和中序遍历求前、后序
题目: 思路: 这题是比较典型的树的遍历问题,思路就是将中序遍历作为位置的判断依据,假设有个节点A和它的父亲Afa,那么如果A和Afa的顺序在中序遍历中是先A后Afa,则A是Afa的左儿子,否则是右儿 ...
- DS实验题 Inversion
题目: 解题过程: 第一次做这题的时候,很自然的想到了冒泡和选择,我交的代码是用选择写的.基本全WA(摊手). 贴上第一次的代码: // // main.cpp // sequenceschange ...
- DS实验题 Missile
题目: 提示:并没有精度问题. 原题 NOIP2010 导弹拦截 思路 设源点为A(x1, y1)和B(x2, y2). 第一步,用结构体存节点,包括以下元素: 1.横坐标x 2.纵坐标y 3.节点和 ...
- DS实验题 击鼓传花
题目: 代码1(数组实现): // // main.cpp // DS-击鼓传花 // // Created by wasdns on 16/11/9. // Copyright © 2016年 wa ...
随机推荐
- Redis快速入门:安装、配置和操作
本文是有关Redis的系列技术文章之一.在之前的文章中介绍了<Redis快速入门:初识Redis>,对Redis有了一个初步的了解.今天继续为大家介绍Redis如何安装.配置和操作. 系列 ...
- Windows 10 下ASP.NET4.0尚未在Web服务器上注册
系统换成Win10后,打开VS2012出现如下问题: 网上查找了,大部分都是 C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319 并管理员运行aspnet_ ...
- html5 视频播放
html5 视频播放 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- hdu 4024 二分
转自:http://www.cnblogs.com/kuangbin/archive/2012/08/23/2653003.html 一种是直接根据公式计算的,另外一种是二分算出来的.两种方法速度 ...
- Linux下打包压缩war和解压war包
Linux下打包压缩war和解压war包 unzip是一种方法,如果不行则采用下面的方法 把当前目录下的所有文件打包成game.war jar -cvfM0 game.war ./ -c 创建wa ...
- 免费电子书:使用VS Online敏捷管理开源项目
今天推荐的是一本由微软出版社发布的免费电子书,涉及的话题是如何在Visual Studio Online中基于敏捷的思想来管理开源项目. 本书的几位作者(自称ALM领域的游侠),给大家分享了在一个敏捷 ...
- 学会使用Chromium中的LOG
转自:http://blog.csdn.net/kuerjinjin/article/details/43937345 简介 众所周知chromium项目无比巨大,想去快速的了解,调试并添加自己想要的 ...
- scp 使用
[spark-hadoop@master ~]$ sudo scp /etc/profile spark-hadoop@slave1:/etc spark-hadoop@slave1's passwo ...
- 如何重启Cloudera Manager?
为什么重启: 突然发现ClouderaManager的webui访问不了了…… 我使用netstat看了一下我的webui监听端口,发现尼玛N多CLOSE_WAIT,网上查了一下是Socket关闭有问 ...
- HyperLink控件
设置链接 NavigateUrl 填写链接 text 属性 为显示内容