Train Problem I

                                                                                                                Time Limit: 2000/1000
MS (Java/Others)    

                                                                                                             Memory Limit: 65536/32768
K (Java/Others)

                                                                             

可能读完题很多人觉得不用栈,关栈什么事,不过如果代码能力强的话的确不用。主要这题题意还是有点不清楚;

题意:n列火车,串o1是火车进站的先后顺序,串o2是火车出站的先后顺序,注意这只是一个先后次序,并不代表这些火车是一个挨着一个地进(出);题目求如果按o1这种进站次序与o2这种出站次序是否符合实际;

思路:可以直接c语言模拟栈,也可以直接用栈写,但思路都是一样的;我们发现这个火车站的进出次序十分符合栈的特点,每次出去的都是栈顶元素,要判断是否符合实际既是判断进与出的关系,我们可以进来然后出去,然后再进来再进来再出去,因为出去的先后顺序已经确定了,所以进入就相当于入栈,判断栈顶元素是否等于出去的顺序,是则删除栈顶元素然后要出去的火车变成下一列,如此重复,最后所有火车都进站后判断栈是否为空或者判断指向下一列要出去的火车指针是否等于最后出去的火车(这里叙述有点模糊,没关系看以下代码),是则YES,反之,NO;

看栈模拟:

#include<bits/stdc++.h>
using namespace std;
char s1[10],s2[10];
int a[20];
int main()
{
int n,i;
while(~scanf("%d%s%s",&n,s1,s2))
{
memset(a,0,sizeof(a));
stack<char>q;
int k=0,k1=0;
for(i=0; i<n; i++)
{
q.push(s1[i]);//进站相当于入栈;
a[k++]=1;//1表示进;
while(!q.empty()&&q.top()==s2[k1])
{
a[k++]=-1;//-1表示出;
q.pop();
k1++;//指向下一列要出去的火车;
}
}
if(k1==n)//如果栈为空或指针刚好指向最后一列出去的火车则符合实际;
{
printf("Yes.\n");
for(i=0; i<k; i++)
if(a[i]==1)
printf("in\n");
else printf("out\n");
printf("FINISH\n");
}
else printf("No.\nFINISH\n");
}
return 0;
}

看c代码模拟:

#include<bits/stdc++.h>
using namespace std;
char in[10],out[10],s[10];
int a[20];
int main()
{
int n,i;
while(~scanf("%d%s%s",&n,in,out))
{
memset(a,0,sizeof(a));
int x1=strlen(in);
int j=0,k=0,k1=0;
for(i=0; i<x1; i++)
{
s[j]=in[i];//模拟栈相当于入栈;
a[k++]=1;
while(j>=0&&s[j]==out[k1])
{
j--;//相当于删除了栈顶元素;
a[k++]=-1;
k1++;指向下一列要出去的火车;
}
j++;
}
if(k1==n)
{
printf("Yes.\n");
for(i=0; i<k; i++)
if(a[i]==1)
printf("in\n");
else printf("out\n");
printf("FINISH\n");
}
else printf("No.\nFINISH\n");
}
return 0;
}

感觉题意才是最主要的!!!!

HDU-1022Train Problem I,简单栈模拟;的更多相关文章

  1. HDU Train Problem I 1022 栈模拟

    题目大意: 给你一个n 代表有n列 火车,  第一个给你的一个字符串 代表即将进入到轨道上火车的编号顺序, 第二个字符串代表的是 火车出来之后到顺序, 分析一下就知道这,这个问题就是栈, 先进后出吗, ...

  2. HDU 1022 Train Problem I(栈模拟)

    传送门 Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of st ...

  3. UVALive 7454 Parentheses (栈+模拟)

    Parentheses 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/A Description http://7xjob4.c ...

  4. 吐泡泡(2018年全国多校算法寒假训练营练习比赛(第二场)+栈模拟)+Plug-in(codeforces81A+栈模拟)

    吐泡泡题目链接:https://www.nowcoder.com/acm/contest/74/A 题目: 思路: 这种题目当初卡了我很久,今天早训时遇到一个一样得题,一眼就想到用栈模拟,就又回来把这 ...

  5. 【栈模拟dfs】Cells UVALive - 3486

    题目链接:https://cn.vjudge.net/contest/209473#problem/D 题目大意:有一棵树,这棵树的前n个节点拥有子节点,告诉你n的大小,以及这n个节点各有的子节点个数 ...

  6. HDU 1276 士兵队列训练问题(模拟)

    原题代号:HDU 1276 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1276 题目原题: 士兵队列训练问题 Time Limit: 2000/10 ...

  7. hdu Train Problem I

    这道题是道简单的栈模拟题,只要按照真实情况用栈进行模拟即可: #include<stdio.h> #include<string.h> #include<stack> ...

  8. HDU 4708 Rotation Lock Puzzle(模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4708 题目大意:给定一个方形矩阵,边长为3-10的奇数.每一圈的数字可以沿着顺时针方向和逆时针方向旋转 ...

  9. poj1363Rails(栈模拟)

    主题链接: id=1363">啊哈哈,点我点我 思路: 这道题就是一道简单的栈模拟. .. .我最開始认为难处理是当出栈后top指针变化了. .当不满足条件时入栈的当前位置怎么办.这时 ...

随机推荐

  1. Ubuntu下如何用命令运行deb安装包

    转载自 WindTaiL的博客 如果ubuntu要安装新软件,已有deb安装包(例如:iptux.deb),但是无法登录到桌面环境.那该怎么安装?答案是:使用dpkg命令. dpkg命令常用格式如下: ...

  2. 题解报告:hdu 2030 汉字统计

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2030 Problem Description 统计给定文本文件中汉字的个数. Input 输入文件首先 ...

  3. 在Windows上部署Zabbix客户端

    将Zabbix for Windows客户端拷贝到windows系统的c盘,修改配置文件的相关配置项后,打开cmd窗口执行: # 安装服务 c:\zabbix\bin\win32\zabbix_age ...

  4. 455 Assign Cookies 分发饼干

    假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有一个尺寸 ...

  5. Objective -C Categories

    Objective -C Categories  The dynamic runtime dispatch mechanism employed by Objective-C lets you add ...

  6. iOS中的蓝牙

    iOS中的蓝牙 概述 iOS中提供了4个框架用于实现蓝牙连接 1.GameKit.framework(用法简单) 只能用于iOS设备之间的同个应用内连接,多用于游戏(eg.拳皇,棋牌类),从iOS7开 ...

  7. JavaScript——responseType

    https://www.cnblogs.com/cdemo/p/5225848.html https://blog.csdn.net/wkyseo/article/details/78232485 异 ...

  8. 关于mapState和mapMutations和mapGetters 和mapActions辅助函数的用法及作用(一)-----mapState

    一.通过mapState函数的对象参数来赋值: <p>{{ count }}</p> <p>{{ count1 }}</p> <p>{{ c ...

  9. 迅为电子HMI人机界面|CAN总线触摸屏

    本文转自迅为:http://www.topeet.com 协议特色: 1. 支持所有 CAN 协议,例如常用的 J1939 和 CANopen 协议. 2. 提供高度开放的 CAN 帧的编辑界面,用户 ...

  10. nutwk的maven中央仓库及配置

    官方maven服务器:https://jfrog.nutz.cn/artifactory/jcenter/ 如果用阿里的maven服务器,特别提醒: