#问题求解与方程# 实验三 F 数据结构之栈的应用
数据结构之栈的应用
发布时间: 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”。
abcde baedc bjfuacm fujcbma
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 数据结构之栈的应用相关推荐
- (三)数据结构之“栈”
数据结构之"栈" 栈是什么 栈的应用场景 场景一:十进制转二进制 场景二:有效的括号 场景三:函数调用堆栈 JS中的函数调用堆栈 LeetCode:20.有效的括号 LeetCod ...
- #问题求解与编程# 实验三 G小蝌蚪安家
小蝌蚪安家 发布时间: 2018年4月2日 20:48 时间限制: 1000ms 内存限制: 128M 描述 在一个矩形区域内,有些地方有水,有些地方没水.所有相邻的有水的地方会共同组成一个水 ...
- c语言数据结构二叉树实验报告,数据结构实验三二叉树实验报告.doc
数据结构实验三二叉树实验报告 数据结构实验报告 实验名称: 实验三--二叉树 学生姓名: XX 班 级: 班内序号: 学 号: 日 期: 1.实验要求 1.1实验目的 通过选择下面两个题目之一进行实现 ...
- 20172305 2017-2018-2 《程序设计与数据结构》实验三报告
20172305 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 谭鑫 学号:20172305 实验教师:王志 ...
- 20172332 2017-2018-2 《程序设计与数据结构》实验三报告
20172332 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 于欣月 学号:20172332 实验教师:王 ...
- 数据结构实验三 树的遍历生成树
广州大学学生实验报告 开课实验室:计算机科学与工程实验(电子楼418A) 2019年4月19日 学院 计算机科学与教育软件学院 年级.专业.班 计算机科学与技术 姓名 学号 实验课程名称 数据 ...
- 20172324 2017-2018-2《程序设计与数据结构》实验三报告
20172324 2017-2018-2<程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 曾程 学号:20172324 实验教师:王志强 ...
- 数据结构java 图实验代码_20172329 2018-2019 《Java软件结构与数据结构》实验三报告...
20172329 2018-2019-2 <Java软件结构与数据结构>实验三报告 课程:<Java软件结构与数据结构>html 班级: 1723java 姓名: 王文彬lin ...
- 数电实验三 数据选择器及其应用 任务一:用74151芯片采用降维的方法实现F=ABC+ABD+ACD+BCD; 任务二:用74151芯片采用降维方式实现F=BCD反+BC反+A反D;
数电实验三 数据选择器及其应用 任务一:用74151芯片采用降维的方法实现F=ABC+ABD+ACD+BCD; 任务二:用74151芯片采用降维方式实现F=BCD反+BC反+A反D: 实验数据单
最新文章
- Mandriva学习笔记之八:安装Redis2.2.14
- 模拟 Codeforces Round #249 (Div. 2) C. Cardiogram
- PCB叠层及相关板材介绍
- 知道无人驾驶的网络安全有多重要吗?英国政府都决定插手开发了
- LINQ 学习路程 -- 查询语法 LINQ Query Syntax
- 【ES6】什么是Promise?解析Promise的基本用法
- MyBatis源码之:MapperMethod
- 2017.6.6 数表 思考记录
- 使用jmeter 上传文件
- CCF CSP202012-2期末预测之最佳阈值
- python文件管不了_Python文件_管道与模块编写
- 建设银行和工商银行的网银安全措施
- 自己组装的台式电脑怎么安装系统教学
- SuperPoint论文笔记
- Python爬虫入门记录1.0:获取网站某板块首页面资讯文章标题
- C++强制类型转化:reinterpret_cast
- DICOM:Transfer Syntax传输语义之奇葩GE Private TS
- 神经风格迁移综述论文分享(neural style transfer review)
- python怎么算阶乘_Python 计算阶乘的算法
- 百胜中国2020年第四季度收入为22.6亿美元,同比增长11%