经典例题:
Train Problem I
火车按照给定顺序进站,判断是否可以按给定顺序出站,若能这输出YES.和 in,out的顺序和最后FINISH,否则输出NO.和FINISH
输入
3 123 321 //3列火车123,出站顺序为321,求火车进出站的顺序
3 123 312
输出
Yes.
in
in
in
out
out
out
FINISH
No.
FINISH
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main()
{
int n;
char *s1;
char *s2;
cin >> n;
s1 = new char[n];
s2 = new char[n];
cin >> s1 >> s2;
stack<char> s;
vector<int> v;//保存进出栈的序列
int j = 0;
for (int k = 0; k < n; k++)
{
s.push(s1[k]);
v.push_back(1);
while (!s.empty() && s.top() == s2[j])
{
v.push_back(0);
s.pop();
j++;
}
}
if (s.empty())
{
cout << "YES" << endl;
for (int k = 0; k < v.size(); k++)
{
if (v.at(k))
{
cout << "in" << endl;
}
else
{
cout << "out" << endl;
}
}
}
else
{
cout << "NO" << endl;
}
cout << "FINISH" << endl;
delete[] s1;
delete[] s2;
system("pause");
return 0;
}