Train Problem I
思路和代码
#include<bits/stdc++.h>
#define UP(i,x,y) for(int i=x; i<=y; i++)
using namespace std;
stack<int> st;
int n;
char temp;
vector<string> ans;
/*
传入两个参数,判断s1作为入栈顺序 s2作为出栈顺序是否成立
s1 = 123
s2 = 321
1入栈查看s2第j位是不是1:不是则2入栈,是则j++并且出栈。
2入栈同理
*/
bool checkTrain(string s1, string s2)
{
int i = 0, j = 0;
int k = 0;
while(k <= 100)
{
if(i < s1.size())
{
st.push(s1[i]-'0');
i++;
ans.push_back("in");
//cout<<"in"<<endl;
}
if(st.top() == (s2[j]-'0'))
{
//cout<<"out"<<endl;
ans.push_back("out");
st.pop();
// cin>>temp;
j++;
}
if(st.empty()==1)
{
return true;
break;
}
// 统计while循环循环了几次
k++;
}
return false;
}
int main()
{
cin>>n;
string s1,s2;
cin>>s1>>s2;
cout<<checkTrain(s1, s2)<<endl;
for(int i=0; i<ans.size(); i++)
{
cout<<ans[i]<<endl;
}
return 0;
}