HDU

来源:互联网 发布:淘宝联盟返现 编辑:程序博客网 时间:2024/06/06 07:19

题目链接:HDU - 1022 : Train Problem I

题意:告诉了火车进出战的顺序,问能可不可行,可行的话把输出进出站方案,否则输出No

思路:用栈模拟火车进出站,匹配输出序列,若栈顶与输出相同,就出栈,并vector标记进出战,若比较到了栈的末尾,说明可行,否则不可行

AC代码

#include<iostream>#include<stack>#include<vector>using namespace std;int main(){    int n;    string s1,s2;    while(cin>>n)    {        cin>>s1>>s2;        vector<string>v;        stack<int>s;        int cnt[15];        for(int i=0; i<s2.size(); i++)            cnt[i]=s2[i]-'0';        int t=0;        for(int j=0; j<n; j++)        {            s.push(s1[j]-'0');            v.push_back("in");            while(!s.empty()&&s.top()==cnt[t])            {                s.pop();                t++;                v.push_back("out");            }        }        if(s.empty())        {            cout<<"Yes."<<endl;            for(int i=0; i<v.size(); i++)                cout<<v[i]<<endl;        }        else            cout<<"No."<<endl;            cout<<"FINISH"<<endl;    }    return 0;}
原创粉丝点击