Train Problem I

来源:互联网 发布:雨露计划软件下载 编辑:程序博客网 时间:2024/06/10 23:20

主要的题意是输出火车进站出站的顺序,如果不符合条件的话就结束。

#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<stack>#define Max 100using namespace std;int main(){    stack<char>Q;    int i,j,n,k,re[Max];  //n为列车数,re表示结果,1表示进栈,0表示出栈    char str1[Max],str2[Max];     //序列1和序列2    while(~scanf("%d%s%s",&n,str1,str2))    {        i=0;        j=0;        k=1;        Q.push(str1[0]);    //为防止栈空,压1个进去        re[0]=1;   //记录进了一个        while(i<n&&j<n)        {            if(Q.size()&&Q.top()==str2[j])   //若栈顶元素与序列2当前的元素相等,则弹栈,序列2集团向后移一位            {                j++;                Q.pop();                re[k++]=0;            }            else   //否则从序列1中取当前元素压入栈中            {                if(i==n)   break;                Q.push(str1[++i]);                re[k++]=1;            }        }        if(i==n)   //若i==n表示栈顶元素不等于序列2当前的元素,且序列1中元素都已经入过栈,判断不能得到序列2一样的答案        {            printf("No.\n");        }        else        {            printf("Yes.\n");            for(i=0; i<k; i++)            {                if(re[i])                    printf("in\n");                else printf("out\n");            }        }        printf("FINISH\n");    }    return 0;}


0 0