HDU 1022 Train Problem I 模拟栈题解
来源:互联网 发布:网络攻击防范 编辑:程序博客网 时间:2024/04/29 04:43
火车进站,模拟一个栈的操作,额外的栈操作,查看是否能按照规定顺序出栈。
数据量很少,故此题目很容易AC。
直接使用数组模拟就好。
#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 ini++;//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 backint k = 0;//check possiblefor (; 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 ini++;//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 1
- HDU 1022 Train Problem I 模拟栈题解
- hdu 1022 Train Problem I 栈模拟
- HDU 1022 Train Problem I 栈的模拟
- hdu 1022 Train Problem I(模拟+栈)
- hdu 1022 Train Problem I(栈的模拟)
- HDU 1022 Train Problem I (STL 栈模拟)
- HDOJ/HDU 1022 Train Problem I(模拟栈)
- HDU-1022Train Problem I,简单栈模拟;
- HDU 1022 Train Problem I (模拟栈)
- hdu 1022 Train Problem I(简单模拟+栈)
- hdu 1022 Train Problem I 栈
- Train Problem I hdu 1022 栈
- hdu 1022 Train Problem I(栈)
- hdu 1022 Train problem I(栈~~)
- HDU 1022 Train Problem I 栈、队列
- hdu 1022 Train Problem I(栈)
- HDU 1022 Train Problem I (栈)
- HDU 1022 Train Problem I 栈
- poj3321Apple Tree
- Tomcat6源码分析
- 字符实体
- hdu3887Counting Offspring
- 为什么将char const * 类型的值赋给char * 类型的变量编译不通过?
- HDU 1022 Train Problem I 模拟栈题解
- 玉米炖猪蹄
- POJ(1151)——Atlantis(线段树 扫描线)
- 今天吃饭听到的一句话
- js数字相加
- CSS CSS 外边距(margin)重叠及防止方法
- Linux JDK rpm文件的安装配置
- cocos2dx3.2 学习笔记(2)--ActionManagerTest
- 9款减肥好膳食