您的位置:首页 > 其它

2017校招-360火车行进方向判定题

2016-09-10 21:33 183 查看
判定火车前进方向,一路坐火车M-N站之间,每一站有一面旗帜,

小明中途醒了两次,每次都看到了一个红旗序列,判定火车可能的行进方向,forward,backward,both,invalid输出结果

#include<iostream>
#include<string>
#include<vector>
using namespace std;
void strongBrain(){
string s,a,b;
while(1){
s="";a="",b="";
cin>>s>>a>>b;
vector<int> avec_beg,avec_end,bvec_beg,bvec_end;
if(s!=""){
int a_beg=0,b_beg=0;
int flag1 = -1,flag2=-1;
while(a_beg!=-1){
a_beg = s.find(a,a_beg);
if(a_beg!=-1){
avec_beg.push_back(a_beg);
avec_end.push_back(a_beg+a.size()-1);
a_beg = a_beg + a.size();
}
}
while(b_beg!=-1){
b_beg = s.find(b,b_beg);
if(b_beg!=-1){
bvec_beg.push_back(b_beg);
bvec_end.push_back(b_beg+b.size()-1);
b_beg = b_beg+b.size();
}
}
for(int i=0;i<avec_beg.size();++i){
for(int j=0;j<bvec_beg.size();++j){
if(avec_end[i]<bvec_beg[j])flag1=1;
if(bvec_end[j]<avec_beg[i])flag2=1;
}
}
if(flag1==1&&flag2==1)cout<<"both"<<endl;
else if(flag1==1&&flag2==-1)cout<<"forward"<<endl;
else if(flag2==1&&flag1==-1)cout<<"backward"<<endl;
else cout<<"invalid"<<endl;
}
else break;
}
}
int main()
{
strongBrain();
return 0;
}


输入分为三行,第一行为火车行进序列,

第二行为第一次醒来时看到的序列

第三行为第二次醒来时看到的序列

测试用例:

atob

a

b

输出:forward

iloveit

it

lo

输出:backward

icallitimpossible

possible

timposs

输出:invalid

youseeitseeit

see

it

输出:both
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: