最近正是春节期间,小明的爸爸决定带着一家人出去旅游。
于是他们开着小车准备从城市A开车到城市B,由于早上起的太早,所以小明很快就在车上睡着了,过了一会,小明醒了过来,开始看外面的风景,他发现为了迎接春节的到来,高速路旁边每隔一段距离就有一种特定颜色的彩带。
于是他开始记住他看到的彩带的颜色,但是他还是比较困,所以很快又睡着了,过了一会他又醒了,又开始记忆彩带的颜色,然后他又开始睡觉,这次直到到了城市B才醒过来。
在旅馆里面,他告诉父母他在路上做了什么,并写下了在清醒时看到的彩带颜色序列。小明的父母觉得小明平时有点小笨,不可能记住这么多的颜色,他们给了你在高速路上经过的彩带的颜色列表,并请你找出小明是否可以在从A到B的路上或者从B到A的路上看到这些序列。
小明的父母使用小写字母表示颜色。相同的字母表示相同的颜色,不同的字母表示不同的颜色。
输入描述
输入数据包含三行。第一行包含一个非空字符串,其长度不超过105,该字符串由小写字母组成,表示从A到B的途中彩带的颜色。从B到A的途中,汽车经过相同的路径,但顺序相反。
第二行包含小明在第一次醒来期间写的颜色序列。第三行包含在第二次醒来期间写的颜色序列。这两个序列都是非空的,由小写字母组成,每个序列的长度不超过100个字母。每个序列都按时间顺序编写。
输出描述
如果小明只能从A到B的路上看到这个颜色序列,则输出A->B
如果小明只能从B到A的路上看到这个颜色序列,则输出B->A
如果小明既能从A到B的路上看到这个颜色序列,也能从B到A的路上看到这个颜色序列,则输出all
如果小明无法看到这样的序列,则输出no
用例输入 1
aaacaaa aca aa
用例输出 1
all
提示
因为汽车是不断地在前进,所以不能看到同一个彩带两次。城市A和城市B是出发点和到达地,没有挂彩带。
上代码可能有点差错:
#include<bits/stdc++.h>
using namespace std;
int abm,bam;
string ab;
string ba;
string f1,f2;
int main(){
cin>>ab>>f1>>f2;
int l=ab.length();
for(int j=l-1;j>=0;j--){
ba.push_back(ab[j]);
}
if(ab.find(f1)!=-1){
abm++;
}
if(ab.find(f2)!=-1){
abm++;
}
if(ba.find(f1)!=-1){
bam++;
}
if(ba.find(f2)!=-1){
bam++;
}
if(bam and abm){
cout<<"all";
return 0;
}
if(abm){
cout<<"A->B";
return 0;
}
if(bam){
cout<<"B->A";
return 0;
}
else
{
cout<<"no";
}
return 0;
}