hdu 1022 栈

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1022

题意梗概:

火车进桥出桥问题,最多有9辆火车进出,遵循先进后出的原则,就是一个栈的问题,输入两排数一个是进站顺序,一个是出站顺序,如果能实现,就输出Yes.   ,并且输出进出站的顺序,否则输出No.   ,最后输出FINISH  

本题的关键是一定有一段进站出站倒序,也就是不一定等所有的车出来就让前面的车出去。

现在给出AC代码:

#include<stdio.h>
#include<string.h>
int main()
{
    int a[20],c[10];
    char s1[10],s2[10];
    int n;
    while(scanf("%d%s%s",&n,&s1,&s2)!=EOF)
    {
        int j=0,k=0,t=0;
        for(int i=0;i<n;i++)//找倒序的段
        {
            a[t++]=1;
            c[k++]=s1[i];
            while(c[k-1]==s2[j]&&k>=0)
            {
                k--;
                j++;
                a[t++]=-1;
            }
        }
        if(k<=0)
        {
            printf("Yes.\n");
            for(int i=0;i<t;i++)
            {
                if(a[i]==1)printf("in\n");
                else if(a[i]==-1)printf("out\n");
            }
        }
        else printf("No.\n");
        printf("FINISH\n");
    }
    return 0;
}

 

 

posted @ 2013-07-28 11:59  拼搏今朝 努力奋进  阅读(230)  评论(0)    收藏  举报