HD 1022 Train Problem I 栈的运用 比较好理解的代码

来源:互联网 发布:精仿雨轩qq教程网源码 编辑:程序博客网 时间:2024/05/22 17:04
#include <stdio.h>
#include <stdlib.h>
#define max 100
char in[max];//存储进栈序列
char out[max];//存储出栈序列
char stack[max];//栈
int flag[max];//标记 0 表示出栈 1 表示入栈
int main()
{
    int i,j,n,top,k;
    while (scanf("%d",&n)!=EOF)
    {
        scanf("%s%s",in,out);//输入两个字符串 
        top=0;
        i=j=k=0;
        while (i<n&&j<=n)
        {
            if(top>0&&stack[top-1]==out[i])//和出栈序列的第一个元素相同则出栈
            {
                flag[k++]=0;
                i++;
                top--;
            }
            else//不同则入栈
            {
                stack[top++]=in[j];
                j++;
                flag[k++]=1;
            }
        }
        //printf(">>%d %d %d\n",k,i,j);
        if (k==2*n)
        {
            printf("Yes.\n");
            for (i=0;i<2*n;++i)
            {
                if(flag[i]== 0)
                printf("out\n");
                else
                printf("in\n");
            }
        }
        else
        printf("No.\n");
        printf("FINISH\n");
    }
    return 0;
}
原创粉丝点击