解题思路:
一个进站出站的操作案例
注意事项:
1.出栈不是要等所有都进栈后才能出栈,比如进栈4321,4进栈后不等3进栈就出栈,这样虽然4先进,但也是先出,就可以形成4321的出栈顺序。我们在编写这道题时应该注意这一点,边进行进栈,边考虑是否要出栈(刚学习栈的可能会考虑不到)。2.输入是输入多组数据,没有限制,要进行循环输入,没有上限。3.输出Yes或No后有“.”。
参考代码:
#include
#include
#include
#include
using namespace std;
int main()
{
string traincome, traingo;//traincome代表输入的进栈顺序,traingo代表输入的出栈顺序
int n;//n代表火车的数量
while (cin>>n>>traincome>>traingo)//循环输入
{
int p = 0;//方便访问字符串traingo的内容
list
stack
for (int i = 0; i < n; i++)//进行进栈和出栈的操作
{
Traincome.push(traincome[i]);
L.push_back(1);
while (Traincome.top() == traingo[p])//每次进栈后,进行判断是否需要出栈。
{
p++;//不要写在在while判断中(traingo[p++]),因为即使没有进行出栈,p也会自加。
Traincome.pop();
L.push_back(0);
if (Traincome.empty())
{
break;
}
}
}
if (Traincome.empty())//如果栈为空代表输入案例正确
{
cout << "Yes."<<endl;
for (list
{
if (*it == 1)
{
cout << "in"<<endl;
}
else
{
cout << "out"<<endl;
}
}
}
else
{
cout << "No."<<endl;
}
cout << "FINISH"<<endl;
}
return 0;
}
0.0分
2 人评分