数据结构之栈的应用

发布时间: 2018年4月2日 20:47   时间限制: 1000ms   内存限制: 128M

描述

对于每一位学计算机的孩纸来说,数据结构(Data Structure)无疑是一门很重要的课程,对于做ACM的fudq来说,学好数据结构那可是重中之重啊~

某天,fudq坐火车去旅行,途径火车站,看到火车进站出站,突然回想起当年Professor Li教授的数据结构里栈的应用,还有那充满激情的“抽签助手”……

什么是“栈”呢,很多人马上会想到后进先出(Last In First Out)吧~

根据百度百科解释:

栈是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个进栈的数据被第一个读出来)

于是fudq想到了Professor Li曾经为了加深同学们对栈的理解,所提出的一个问题:

给出两个字符串s1和s2,请判断s1能否通过栈的模拟(即进栈和出栈)得到s2?

是不是很easy,那就快快AC吧~

输入

输入有多组测试数据,每组输入占两行,s1和s2各占一行。为了简化问题,s1和s2保证仅由小写字母组成,不会出现其它字符;s1和s2等长,且长度不大于100;s2是s1的一种排列,不会在s2中出现s1里没有的字符。

输出

对于每组输入,输出仅占一行,如果s1能通过栈的模拟得到s2,则输出“YES”;否则输出“NO”。

样例输入1

abcde
baedc
bjfuacm
fujcbma

样例输出1

YES
NO

———————————————————————————————————————————————————

感觉上这个题就是十分经典的火车入栈问题~

但是为啥就是A不了呢.....................Runtime error

#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
int main()
{int n,i,j;stack<char>s;char str1[120],str2[120],flag=1;while(scanf("%d",&n)!=EOF){   while(!s.empty())s.pop();cin>>str1>>str2;for(i=0,j=0;i<n;i++){s.push(str1[i]);while(!s.empty()&&s.top()==str2[j]){s.pop();j++;}}if(!s.empty()){cout<<"NO"<<endl;flag=0; }else{cout<<"YES"<<endl;}} return 0;
}

标程:

#include<cstdio>
#include<cstring>
#include<stack>
#include<iostream>
using namespace std;
int main()
{//freopen("data.in","r",stdin);string s1,s2;stack<char>s;while(cin>>s1>>s2){while(!s.empty())s.pop();int i=0,j=0;while(j<s2.length()){if(s1[i]==s2[j]){i++;j++;}else if(!s.empty()&&s.top()==s2[j]){s.pop();j++;}else if(i<s1.length()){s.push(s1[i]);i++;}elsebreak;}j==s2.length()?cout<<"YES"<<endl:cout<<"NO"<<endl;}return 0;
}
方法有记忆价值 有些思考点还有卡壳 但是..我要记下来...

#问题求解与方程# 实验三 F 数据结构之栈的应用相关推荐

  1. (三)数据结构之“栈”

    数据结构之"栈" 栈是什么 栈的应用场景 场景一:十进制转二进制 场景二:有效的括号 场景三:函数调用堆栈 JS中的函数调用堆栈 LeetCode:20.有效的括号 LeetCod ...

  2. #问题求解与编程# 实验三 G小蝌蚪安家

    小蝌蚪安家 发布时间: 2018年4月2日 20:48   时间限制: 1000ms   内存限制: 128M 描述 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水 ...

  3. c语言数据结构二叉树实验报告,数据结构实验三二叉树实验报告.doc

    数据结构实验三二叉树实验报告 数据结构实验报告 实验名称: 实验三--二叉树 学生姓名: XX 班 级: 班内序号: 学 号: 日 期: 1.实验要求 1.1实验目的 通过选择下面两个题目之一进行实现 ...

  4. 20172305 2017-2018-2 《程序设计与数据结构》实验三报告

    20172305 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 谭鑫 学号:20172305 实验教师:王志 ...

  5. 20172332 2017-2018-2 《程序设计与数据结构》实验三报告

    20172332 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 于欣月 学号:20172332 实验教师:王 ...

  6. 数据结构实验三 树的遍历生成树

    广州大学学生实验报告 开课实验室:计算机科学与工程实验(电子楼418A)     2019年4月19日 学院 计算机科学与教育软件学院 年级.专业.班 计算机科学与技术 姓名 学号 实验课程名称 数据 ...

  7. 20172324 2017-2018-2《程序设计与数据结构》实验三报告

    20172324 2017-2018-2<程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 曾程 学号:20172324 实验教师:王志强 ...

  8. 数据结构java 图实验代码_20172329 2018-2019 《Java软件结构与数据结构》实验三报告...

    20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构>html 班级: 1723java 姓名: 王文彬lin ...

  9. 数电实验三 数据选择器及其应用 任务一:用74151芯片采用降维的方法实现F=ABC+ABD+ACD+BCD; 任务二:用74151芯片采用降维方式实现F=BCD反+BC反+A反D;

    数电实验三 数据选择器及其应用 任务一:用74151芯片采用降维的方法实现F=ABC+ABD+ACD+BCD; 任务二:用74151芯片采用降维方式实现F=BCD反+BC反+A反D: 实验数据单

最新文章

  1. Mandriva学习笔记之八:安装Redis2.2.14
  2. 模拟 Codeforces Round #249 (Div. 2) C. Cardiogram
  3. PCB叠层及相关板材介绍
  4. 知道无人驾驶的网络安全有多重要吗?英国政府都决定插手开发了
  5. LINQ 学习路程 -- 查询语法 LINQ Query Syntax
  6. 【ES6】什么是Promise?解析Promise的基本用法
  7. MyBatis源码之:MapperMethod
  8. 2017.6.6 数表 思考记录
  9. 使用jmeter 上传文件
  10. CCF CSP202012-2期末预测之最佳阈值
  11. python文件管不了_Python文件_管道与模块编写
  12. 建设银行和工商银行的网银安全措施
  13. 自己组装的台式电脑怎么安装系统教学
  14. SuperPoint论文笔记
  15. Python爬虫入门记录1.0:获取网站某板块首页面资讯文章标题
  16. C++强制类型转化:reinterpret_cast
  17. DICOM:Transfer Syntax传输语义之奇葩GE Private TS
  18. 神经风格迁移综述论文分享(neural style transfer review)
  19. python怎么算阶乘_Python 计算阶乘的算法
  20. 百胜中国2020年第四季度收入为22.6亿美元,同比增长11%

热门文章

  1. 录屏大师怎么用 录屏大师使用教程
  2. 2020第五空间 hate-php rosb 交流
  3. 错误 LNK2001 无法解析的外部符号 _WinMain@16,VS程序入口点设置
  4. opencv实现图像二值化(直接确定或滑杆调节)
  5. 树莓派复制MFRC522 门禁IC卡(支持block0写入,亲测可用)
  6. 自动化测试之超厉害自动化录制工具介绍
  7. QGuiApplication
  8. 计算机组成原理第二部: 存储系统与指令系统
  9. 如何在KeyShot中设置材质模板?
  10. 电机的堵转检测及处理