3 123 321
3 123 312
Yes.
in
in
in
out
out
out
FINISH
No.
FINISH
源代码
#include<iostream>
#include<stack>
#include<string>
#include<vector>
using namespace std;
int trainproblem1(string in,string out,int n);
vector<string> svec;
void main()
{
string str1,str2;
int number;
int i,j;
bool flag=0;
//while(!cin.eof())
while(cin>>number)
{
//cin>>number>>str1>>str2;
cin>>str1>>str2;
int number1=number*2;
flag=trainproblem1(str1,str2,number);
if(flag==1)
{
cout<<"Yes."<<endl;
for(vector<int>::size_type ix=0;ix<number1;ix++)
cout<<svec[ix]<<endl;
}
else
{
cout<<"No."<<endl;
}
cout<<"FINISH"<<endl;
flag=0;
svec.clear();
fflush(stdin);
}
}
int trainproblem1(string in,string out,int n)
{
stack<int> intStack;
int i=0,k=0;
while(i<n)
{
intStack.push(in[i++]);
svec.push_back("in");
while(!intStack.empty() && intStack.top()==out[k])
{
intStack.pop();
svec.push_back("out");
k++;
}
}
if(intStack.empty())
return 1;
else return 0;
}
真是惭愧,栈学的太烂。参考同学的代码整了好久才搞出来。。
问题总结:
1:需要深刻理解栈的应用。
2:需要多次输入数据时,记得清空上次遗留数据。
3:格式错误需注意。
4:疑问?The input is terminated by the end of file.使用while(!cin.eof())不知道为何会WA?
网上解答:while(!cin.eof()) //直至按ctrl+z键退出!
PS:The input is
terminated by the end of file
统一使用
int x;
while(cin>>x)
{
}
return 0;