hdu1022Train Problem I(栈的模拟)

用到的一些栈的东西:

<stack>类文件中的函数

stack<int>p;定义一个int型的栈p

p.push(x)向栈中压入一个元素x

p.top()取栈顶元素的值

p.pop()弹出栈顶元素

p.empty()清空栈

isEmpty()判断栈是否为空

#include<stdio.h>
#include<stack>
using namespace std;
int main()
{

    int n,i,j,b[200],k;
    char o1[100],o2[100];
        stack<char>p;
        p.push('s');//提前在栈的底部添加一个元素
    while(scanf("%d",&n)!=-1)
    {
        stack<char>p;
        p.push('s');
        scanf("%s %s",o1,o2);
        i=0;j=0;k=0;
        while(i<n&&j<=n)/*一定是i<n,因为最后一个出栈后会是i=n,如果是i<=n的话就会继续把后面的\0进栈之后才终止*/
        {
            if(o2[i]==p.top())
            {
                i++;
                p.pop();
                b[k++]=0;//1代表进栈0代表出栈
            }
            else
            {
                p.push(o1[j]);
                j++;
                b[k++]=1;
            }
        }
        if(p.top()=='s')
        {
            printf("Yes.\n");
            for(i=0;i<n*2;i++)
            {
                if(b[i]==0)
                printf("out\n");
                else
                printf("in\n");
            }
            printf("FINISH\n");
        }
        else
        {
            printf("No.\n");
            printf("FINISH\n");
        }
        while(p.top()!='s')
        p.pop();
    }
    return 0;
}

作者: 点A点C

出处: http://www.cnblogs.com/ACshasow/>

关于作者:游戏开发、算法研究,请多多赐教!

本文版权归作者(点A点C)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(572779130@qq.com)咨询.

原文地址:https://www.cnblogs.com/ACshasow/p/2786217.html