B - Train Problem I

2019-05-10  本文已影响0人  Chilkings

火车问题答案
解题思路

#include<string.h>
#include<stack>
using namespace std;

int main()
{
    int n, i, j, k, flag[50]={0};//flag与k记录进出,1表示进0表示出;j表示出栈次数; 
    char s1[15], s2[15];
    stack <char> s;
    while(scanf("%d %s%s",&n,s1,s2)!=EOF)
    {   
        while(!s.empty())  
        s.pop(); //删除首元素
        j = k = 0;
        for(i = 0; i < n; i++)
        {
            s.push(s1[i]);//在队尾插入一个元素
            flag[k++] = 1;
            while(!s.empty() && s.top() == s2[j])
            {
                flag[k++] = 0;
                s.pop();
                j++;
            }
        }
        if(j == n)
        {
            printf("Yes.\n");
            for(i = 0; i < k; i++)
            {
                if(flag[i])
                    printf("in\n");
                else
                    printf("out\n");
            }
        }
        else
            printf("No.\n");
        printf("FINISH\n");
    }
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读