hdu 1023 - Train Problem

来源:互联网 发布:深圳市房地产交易数据 编辑:程序博客网 时间:2024/05/19 11:47

题意:给定一个长度为n的数串,求是否能经过栈处理后按照第二个串的顺序输出;

思路:水题,直接模拟


代码:

#pragma comment(linker, "/STACK:102400000,102400000")#include "iostream"#include "cstring"#include "algorithm"#include "cmath"#include "cstdio"#include "sstream"#include "queue"#include "vector"#include "string"#include "stack"#include "cstdlib"#include "deque"#include "fstream"#include "map"using namespace std;typedef long long LL;const int INF = 0x1fffffff;const int MAXN = 1000000+100;#define eps 1e-14int main(){    int n;    string train1,train2;    stack<char> q;    queue<string> out;    while(cin >> n)    {        int i=0,j=0;        cin >> train1 >> train2;        while(!q.empty())            q.pop();        while(!out.empty())            out.pop();        while(i != train1.size())                   //入站总是顺序的,所以最后一个入站完毕后就可以退出了        {            q.push(train1[i++]);            out.push("in");            while(!q.empty() && q.top() == train2[j])       //能出站的全出站                q.pop() , j++ , out.push("out");        }        if(q.empty())                               //如果栈没空,说明有火车永远走不出站,方案不可行        {            cout << "Yes." << endl;            while(!out.empty())            {                cout << out.front() << endl;                out.pop();            }        }        else            cout << "No." << endl;        cout << "FINISH" << endl;    }    return 0;}