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()。就是一道傻逼模拟题。
题解:本来以为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"); }
相关文章推荐
- 关于Auto Layout
- Python运算符
- 0916词法分析
- CentOS Linux使用crontab运行定时任务详解
- 在iOS开发中,给项目添加新的.framework
- 编译安装SNMP,snmpd.conf配置文件说明
- 下载和使用Spring Tool Suite (JAVA IDE)
- 重庆的程序员,我今天遇到个好事,告诉大家一下!
- http 协议漫谈
- PHP将XML转换为数组
- 1008词法分析
- USB
- Android notification ticker text 详解
- android获得当前view在屏幕中坐标的方法
- 压力测试LoadRunner使用
- 0917.小组词法分析
- body.clientHeight与documentElement.clientHeight
- 数据包经由路由转发时源、目的IP地址及MAC地址变化情况
- 用字节流读写文件
- windows平台打补丁,报错OPatch failed with error code = 74