C++用栈解决列车问题。请问哪里错了
所有的火车从一边从另一边出来。对于这个问题,如果火车先进入铁路,然后火车在火车出发前进入铁路,火车A不能离开,直到火车B离开。下面的图片解决了这个问题。现在你的问题是,在车站有9列火车,所有的火车都有一个ID(从1到n),火车以O1的顺序进入铁路,你的任务是确定火车是否可以在一个订单O2中下车。
输入
输入包含几个测试用例。每个测试用例由一个整数、列车数和两个字符串组成,列车的顺序是:O1,火车的顺序是:O2。输入在文件的末尾终止。在示例输入中有更多的细节。
输出
输出包含一个字符串“No”。如果你不能把O2交换到O1,或者你应该输出一条线,就会包含“Yes”。然后在交换订单的时候输出你的方式(你应该输出“in”来表示火车进入铁路,以及“出”火车出铁路)。在每个测试用例后打印一行包含“FINISH”。示例输出中有更多的细节。
Sample Input
3 123 321
3 123 312
Sample Output
Yes.
in
in
in
out
out
out
FINISH
No.
FINISH
#include <iostream>
#include<stack>
#include<string.h>
using namespace std;
int main()
{
int i,j,n,c;
char O1[10],O2[10];
while(cin>>n)
{
cin>>O1>>O2;
stack<int>is;
for(j=1,c=0;j<=n;j++)
{
is.push(j);
while(is.top()==O2[c])
{
if(!is.empty())
{
c++;
is.pop();
}
if(is.empty())
break;
}
}
cout<<c<<endl;
if(n==c)
{
cout<<"Yes.\n";
for(i=0;i<n;i++) cout<<"in\n";
for(i=0;i<n;i++) cout<<"out\n";
cout<<"FINISH\n";
}
else cout<<"NO.\n"<<"FINISH\n";
}
return 0;
}