题目:



代码:

//
// 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的更多相关文章

  1. DS实验题 融合软泥怪-2 Heap实现

    题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert) ...

  2. DS实验题 Old_Driver UnionFindSet结构 指针实现邻接表存储

    题目见前文:DS实验题 Old_Driver UnionFindSet结构 这里使用邻接表存储敌人之间的关系,邻接表用指针实现: // // main.cpp // Old_Driver3 // // ...

  3. DS实验题 Dijkstra算法

    参考:Dijkstra算法 数据结构来到了图论这一章节,网络中的路由算法基本都和图论相关.于是在拿到DS的实验题的时候,决定看下久负盛名的Dijkstra算法. Dijkstra的经典应用是开放最短路 ...

  4. DS实验题 sights

    算法与数据结构实验题 6.3 sights ★实验任务 美丽的小风姑娘打算去旅游散心,她走进了一座山,发现这座山有 n 个景点, 由于山路难修,所以施工队只修了最少条的路,来保证 n 个景点联通,娇弱 ...

  5. DS实验题 order

    算法与数据结构 实验题 6.4 order ★实验任务 给出一棵二叉树的中序遍历和每个节点的父节点,求这棵二叉树的先序和后序遍历. ★数据输入 输入第一行为一个正整数n表示二叉树的节点数目,节点编号从 ...

  6. DS实验题 Order 已知父节点和中序遍历求前、后序

    题目: 思路: 这题是比较典型的树的遍历问题,思路就是将中序遍历作为位置的判断依据,假设有个节点A和它的父亲Afa,那么如果A和Afa的顺序在中序遍历中是先A后Afa,则A是Afa的左儿子,否则是右儿 ...

  7. DS实验题 Inversion

    题目: 解题过程: 第一次做这题的时候,很自然的想到了冒泡和选择,我交的代码是用选择写的.基本全WA(摊手). 贴上第一次的代码: // // main.cpp // sequenceschange ...

  8. DS实验题 Missile

    题目: 提示:并没有精度问题. 原题 NOIP2010 导弹拦截 思路 设源点为A(x1, y1)和B(x2, y2). 第一步,用结构体存节点,包括以下元素: 1.横坐标x 2.纵坐标y 3.节点和 ...

  9. DS实验题 击鼓传花

    题目: 代码1(数组实现): // // main.cpp // DS-击鼓传花 // // Created by wasdns on 16/11/9. // Copyright © 2016年 wa ...

随机推荐

  1. 一个非常简单的返回局部字符数组的C语言程序, 请问其输出结果?

    以下是该无聊的程序: #include <stdio.h> #include <string.h> char* get_str() {     int x[10];     c ...

  2. LogBack sl4j 通过MDC实现日志记录区分用户Session[以Spring mvc为例]

    1.首先实现一个interceptor,在请求开始的时候MDC put一个Session标志,interceptor结束的时候remove掉   import javax.servlet.http.H ...

  3. PHP站内搜索:多关键字、加亮显示

    一.SQL语句中的模糊查找        主要通过LIKE(不区分大小写)关键字实现模糊查找.LIKE条件一般用在指定搜索某字段的时候, 通过"%"或者" _" ...

  4. Web应用你加盐了吗?——浅谈MD5加密算法中的加盐值(SALT)

    转自:http://blog.csdn.net/blade2001/article/details/6341078 我们知道,如果直接对密码进行散列,那么黑客可以对通过获得这个密码散列值,然后通过查散 ...

  5. "回复 集赞" 抢 《Apple Watch 苹果开发教程》活动开始了!!!

    "回复 集赞" 抢 <Apple Watch 苹果开发教程>活动开始了!!!   活动方式: 回复积赞 第1步:回复该帖   扫描二维码进入活动现场 第2步:召集你的小 ...

  6. JavaScript------事件委托(event delegation)

    简单的说,事件委托(event delegation)是在DOM上层(也就是在触发事件的元素的父元素上)定义事件的处理程序,而不是定义在触发事件的元素本身上. 首先我们来举这样一个例子:我有N个li元 ...

  7. Codeforces Round #331 (Div. 2)

    水 A - Wilbur and Swimming Pool 自从打完北京区域赛,对矩形有种莫名的恐惧.. #include <bits/stdc++.h> using namespace ...

  8. 递推DP URAL 1225 Flags

    题目传送门 /* 1 r; 2 b; 3 w 2不能在最前面,所以dp[1] = 2; dp[2] = 2: 13 or 31 dp[i] = dp[i-1] + dp[i-2]; 只加1或3时,总数 ...

  9. DP VK Cup 2012 Qualification Round D. Palindrome pairs

    题目地址:http://blog.csdn.net/shiyuankongbu/article/details/10004443 /* 题意:在i前面找回文子串,在i后面找回文子串相互配对,问有几对 ...

  10. POJ3493 Largest Submatrix of All 1’s(单调栈)

    题目给一个01矩阵,求最大的1子矩阵. 先用dp预处理出每一行的每一列的1能向上按连续的1延伸多少,然后枚举每一行作为子矩阵的底,那样对于每一行的答案就是POJ2559这个经典问题了. #includ ...