hdu 1022 Train Problem I(栈)

#include<iostream>
#include<vector>
#include<cstring>
#include<string>
#include<stack>
#include<map>
using namespace std;

int f[100005];
/*
    栈的应用
    若in[i]==out[j]则先进栈后立即出栈,此时只需i++,j++;
    若in[i]!=out[j]检查栈首是否为out[j],若是,则出栈,并j++,否则将in[i]入栈,并j++
    i==n时,若栈不为空则说明任有火车未出栈,检查栈内元素==out[j++]   f[i]: 1表示进栈,0表示出栈
    。。。。期末考试时不会做,遂记之
*/
int main()
{
    freopen("d:\\in.txt", "r", stdin);
    freopen("d:\\out.txt", "w", stdout);
    string in, out;
    int n;
    while(cin>>n)
    {
        int cur=0;
        cin>>in>>out;
        bool flag=true;
        int i=0, j=0;
        stack<char>s;
        while(i<n) {
            if(in[i]==out[j]){
                i++; j++;
                f[cur++]=1;
                f[cur++]=0;
            }else if(!s.empty()){
                char first=s.top();
                if(first==out[j]){
                    j++;
                    s.pop();
                    f[cur++]=0;
                }else{
                    s.push(in[i++]);
                    f[cur++]=1;
                }
            }else {
                s.push(in[i++]);
                f[cur++]=1;
            }
        }
        while(!s.empty()){
            char first=s.top();
            f[cur++]=0;
            s.pop();
            if(first != out[j++]){
                flag=false;
                break;
            }
        }
        if(flag){
            cout<<"Yes."<<endl;
            for(int i=0; i<cur; i++){
                if(f[i]==1)cout<<"in"<<endl;
                else cout<<"out"<<endl;
            }
            cout<<"FINISH"<<endl;
        } else {
            cout<<"No.\nFINISH"<<endl;
        }
    }
    return 0;
}
时间: 2024-12-18 20:49:41

hdu 1022 Train Problem I(栈)的相关文章

HDU 1022 Train Problem I 模拟栈题解

火车进站,模拟一个栈的操作,额外的栈操作,查看是否能按照规定顺序出栈. 数据量很少,故此题目很容易AC. 直接使用数组模拟就好. #include <stdio.h> const int MAX_N = 10; char inOrder[MAX_N], outOrder[MAX_N], stk[MAX_N]; bool rs[MAX_N<<2]; int n; int main() { while (scanf("%d", &n) != EOF) { s

HDU 1022 Train Problem I (数据结构 —— 栈)

Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the fastest all over the world ^v^). But here comes

HDU 1022 Train Problem I(栈的操作规则)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1022 Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 45375    Accepted Submission(s): 16966 Problem Description As the new term come

HDU 1022 Train Problem I (STL 栈模拟)

Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 30420    Accepted Submission(s): 11492 Problem Description As the new term comes, the Ignatius Train Station is very busy nowaday

hdu 1022 Train Problem I(栈的应用+STL)

Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20521    Accepted Submission(s): 7712 Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays

HDU 1022.Train Problem I【栈的应用】【8月19】

Train Problem I Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the fastest all over the world ^v^).

hdu 1022 Train Problem

Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30588    Accepted Submission(s): 11561 Problem Description As the new term comes, the Ignatius Train Station is very busy nowadays

HDU 1022 Train Problem I 用栈瞎搞

题目大意:有n辆火车,按一定的顺序进站(第一个字符串顺序),问是否能按规定的顺序出站(按第二个字符串的顺序出去),如果能输出每辆火车进出站的过程. 题目思路:栈的特点是先进后出,和题意类似,还有有一种情况是:开进来立马有开出去.并用vis[]数组的0,1标记进出站情况. 具体看代码 #include<cstdio> #include<cstring> #include<cmath> #include<queue> #include<algorithm&

HDU 1022 Train Problem I

描述As the new term comes, the Ignatius Train Station is very busy nowadays. A lot of student want to get back to school by train(because the trains in the Ignatius Train Station is the fastest all over the world ^v^). But here comes a problem, there i