您的位置:首页 > 其它

Codeforces 8A

2015-10-08 14:37 281 查看
题目大意:给出一个字符串序列,然后给出两个序列s1,s2s_1,s_2,求是否能在原序列中依次找到找到s1,s2s_1,s_2,或者反转原序列是否能找到。

题解:本来以为s1,s2s_1,s_2长度也是很大的,然后写了个KMP,光荣WA在了第14个点,然而看数据也没用。后来看网上的代码是暴力,再次看题才发现模式串不超过100还是怎么的,果断用了string.find()。就是一道傻逼模拟题。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#define X first
#define npos string::npos
#define Y second
#define pii pair<int,int>
#define MP make_pair
#define LL long long
#define DEBUG(...) fprintf(stderr,__VA_ARGS__)
using namespace std;
const int MAXL=1e6+5;
int p,flag=0,both=0,F[MAXL],fo=0,ba=0,fuck=0;
string s,_s,s1,s2;
int Find(string s,string& s1,string& s2)
{
p=0;
p=s.find(s1);
if(p==npos)return 0;
p=s.find(s2,p+s1.size());
if(p==npos)return 0;
return 1;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("8A.in","r",stdin);
freopen("8A.out","w",stdout);
#endif
cin>>s>>s1>>s2;
_s=s;
reverse(_s.begin(),_s.end());
fo=Find(s,s1,s2);
ba=Find(_s,s1,s2);
if(fo&&ba)both=1;
if(!fo&&!ba)fuck=1;
if(fuck)
puts("fantasy");
else if(both)
puts("both");
else if(fo)
puts("forward");
else if(ba)
puts("backward");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: