HDU 1022 Train Problem I 模拟栈题解
火车进站,模拟一个栈的操作,额外的栈操作,查看能否依照规定顺序出栈。
数据量非常少,故此题目非常easyAC。
直接使用数组模拟就好。
#include <stdio.h>
const int MAX_N = 10; char inOrder[MAX_N], outOrder[MAX_N], stk[MAX_N];
bool rs[MAX_N<<2];
int n; int main()
{
while (scanf("%d", &n) != EOF)
{
scanf("%s %s", inOrder, outOrder); int j = 0, out = 0, i = 0, st = 0;
bool possible = true;
while (possible && !(st == 0 && out == n))
{
for (; i < n && inOrder[i] != outOrder[out]; i++)
{
rs[j++] = true;
stk[st++] = inOrder[i];
}//push in
i++;//Watch out: don't forget while inOrder[i]==outOrder[out]!
rs[j++] = true;
rs[j++] = false;
out++; while (st > 0 && stk[st-1] == outOrder[out])
{
st--; out++;
rs[j++] = false;
}//pop back int k = 0;//check possible
for (; k < st && stk[k] != outOrder[out]; k++);
if (k < st) possible = false;
}
if (possible)
{
puts("Yes.");
for (int i = 0; i < j; i++)
{
if (rs[i]) puts("in");
else puts("out");
}
}
else puts("No.");
puts("FINISH");
}
return 0;
}
解法二:
#include <stdio.h>
const int MAX_N = 10; char inOrder[MAX_N], outOrder[MAX_N], stk[MAX_N];
bool rs[MAX_N<<2];
int n; int main()
{
while (scanf("%d", &n) != EOF)
{
scanf("%s %s", inOrder, outOrder); int j = 0, out = 0, i = 0, st = 0;
while (i<n && !(st == 0 && out == n))
{
for (; i < n && inOrder[i] != outOrder[out]; i++)
{
rs[j++] = true;
stk[st++] = inOrder[i];
}//push in
i++;//Watch out: don't forget while inOrder[i]==outOrder[out]!
rs[j++] = true;
rs[j++] = false;
out++; while (st > 0 && stk[st-1] == outOrder[out])
{
st--; out++;
rs[j++] = false;
}//pop back
}
if (st == 0 && out == n)
{
puts("Yes.");
for (int i = 0; i < j; i++)
{
if (rs[i]) puts("in");
else puts("out");
}
}
else puts("No.");
puts("FINISH");
}
return 0;
}
HDU 1022 Train Problem I 模拟栈题解的更多相关文章
- HDOJ/HDU 1022 Train Problem I(模拟栈)
Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot o ...
- HDU 1022 Train Problem I(栈的操作规则)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1022 Train Problem I Time Limit: 2000/1000 MS (Java/Ot ...
- hdu 1022 Train Problem I(栈的应用+STL)
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1022.Train Problem I【栈的应用】【8月19】
Train Problem I Problem Description As the new term comes, the Ignatius Train Station is very busy n ...
- HDU 1022 Train Problem I(栈模拟)
传送门 Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of st ...
- hdu 1022 Train Problem I(栈)
#include<iostream> #include<vector> #include<cstring> #include<string> #incl ...
- HDU 1022 Train Problem I 用栈瞎搞
题目大意:有n辆火车,按一定的顺序进站(第一个字符串顺序),问是否能按规定的顺序出站(按第二个字符串的顺序出去),如果能输出每辆火车进出站的过程. 题目思路:栈的特点是先进后出,和题意类似,还有有一种 ...
- hdu 1022 Train Problem I【模拟出入栈】
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Hdu 1022 Train Problem I 栈
Train Problem I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- 小学生都能学会的python(列表[ ])
小学生都能学会的python(列表[ ]) 1. 什么是列表(list) 能装东西的东西 列表中装的数据是没有限制的, 大小基本上是够用的 列表使用[]来表示. 在列表中每个元素与元素之间用逗号隔开 ...
- NOIP2018提高组省一冲奖班模测训练(三)
NOIP2018提高组省一冲奖班模测训练(三) 自己按照noip的方式考,只在最后一两分钟交了一次 第一题过了,对拍拍到尾. 第二题不会.考试时往组合计数的方向想,推公式,推了一个多小时,大脑爆炸,还 ...
- STM32 GPIO重映射(转)
重映射就是将引脚功能重新定义到其他引脚, 例如PA9是USART1-TX默认的 管脚,但是现在PA9用做它用了,那可以将USART1-TX重新映射到PB6,当然这 种映射不是随意的想映射到哪个脚就哪个 ...
- Spring的ApplicationContextAware接口的作用
ApplicationContextAware接口: 当一个类实现了这个接口之后,这个类就可以方便地获得 ApplicationContext 中的所有bean.换句话说,就是这个类可以直接获取Spr ...
- 在CentOS6.5下配置安装LVS
先上一个图,在内网测试机上安装了一个虚拟机,已经安装好了CentOS 乖乖连wget都没有安装,先安装wget吧 sudo yum install wget
- 洛谷 P1278 单词游戏
P1278 单词游戏 题目描述 Io和Ao在玩一个单词游戏. 他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致. 游戏可以从任何一个单词开始. 任何单 ...
- hdu5240
想了辣么多 貌似就一个条件 #include<bits/stdc++.h> using namespace std; int flag=0;int main(){int t,n,kase= ...
- FreeRTOS系列第13篇---FreeRTOS内核控制
内核控制的一些功能须要移植层提供,为了方便移植.这些API函数用宏来实现,比方上下文切换.进入和退出临界区.禁止和使能可屏蔽中断.内核控制函数还包含启动和停止调度器.挂起和恢复调度器以及用于低功耗模式 ...
- hadoop相关
执行wordcount 代码 package org.apache.hadoop.examples; import java.io.IOException; import java.util.Iter ...
- NOIP2017提高组模拟赛 9 (总结)
NOIP2017提高组模拟赛 9 (总结) 第一题 星星 天空中有N(1≤N≤400)颗星,每颗星有一个唯一的坐标(x,y),(1≤x,y ≤N).请计算可以覆盖至少K(1≤K≤N)颗星的矩形的最小面 ...