火车进站,模拟一个栈的操作,额外的栈操作,查看能否依照规定顺序出栈。

数据量非常少,故此题目非常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;
}

最新文章

  1. IBatis.Net使用总结(三)-- IBatis实现分页返回数据和总数
  2. Integer.parseInt(String s) 和 Integer.valueOf(String s) 的区别
  3. 【bzoj2705】 SDOI2012—Longge的问题
  4. C++学习20 虚基类详解
  5. quartz 的job中获取到applicationContext
  6. 1102. Invert a Binary Tree (25)
  7. open()函数
  8. 【转】ActionBar的基本用法
  9. [CSAPP笔记][第十章 系统级I/O]
  10. Qt5+VS2013兼容XP方法
  11. 【百度地图API】你看过房产地图吗?你知道房产标注是如何建立的吗?
  12. laravel使用多个数据库连接
  13. POJ 2031 Building a Space Station 最小生成树模板
  14. Win8/8.1 下映像管理和恢复环境的配置
  15. lettuce行为驱动框架实例
  16. 百度前端代码规范:HTML
  17. How to get all Errors from ASP.Net MVC modelState?
  18. OpenGL开发学习指南二(glfw+glad)
  19. 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)
  20. 第一个javascript

热门文章

  1. jquery中的jsonp跨域调用(接口)
  2. js Math常用方法
  3. HDU 1232 - 并查集 解题报告
  4. hunnu11544:小明的烦恼——找字符串
  5. Chisel实验笔记(四)
  6. Android解决ScrollView视图导致其底部的布局栏被推到上边的问题
  7. js算法:分治法-棋盘覆盖
  8. C#上传文件
  9. [codeforces 852 D] Exploration Plan 解题报告 (二分+最大匹配)
  10. _itoa进制转换