题目链接: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;
}