亲串

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8049    Accepted Submission(s): 3719

Problem Description
人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,相同的问题Eddy也一直在思考,由于他在非常小的时候就知道亲和串怎样推断了。可是发现,如今长大了却不知道怎么去推断亲和串了,于是他仅仅好又再一次来请教聪明且乐于助人的你来解决问题。
亲和串的定义是这种:给定两个字符串s1和s2,假设能通过s1循环移位,使s2包括在s1中,那么我们就说s2 是s1的亲和串。
Input
本题有多组測试数据。每组数据的第一行包括输入字符串s1,第二行包括输入字符串s2。s1与s2的长度均小于100000。
Output
假设s2是s1的亲和串。则输出"yes",反之。输出"no"。每组測试的输出占一行。
Sample Input
AABCD CDAA ASD ASDF
Sample Output
yes no
中文题,题意不多说,直接上代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include <queue>
#pragma comment (linker,"/STACK:102400000,102400000")
#define maxn 100010
#define MAXN 2005
#define mod 1000000009
#define INF 0x3f3f3f3f
#define pi acos(-1.0)
#define eps 1e-6
typedef long long ll;
using namespace std;char str[2*maxn],pstr[2*maxn];
int nextval[2*maxn];void get_nextval()
{int plen=strlen(pstr);int i=0,j=-1;nextval[0]=-1;while (i<plen){if (j==-1||pstr[i]==pstr[j]){i++;j++;if (pstr[i]!=pstr[j])nextval[i]=j;elsenextval[i]=nextval[j];}elsej=nextval[j];}
}bool KMP()
{int i=0,j=0;int len=strlen(str);int plen=strlen(pstr);while (i<len&&j<plen){if (j==-1||str[i]==pstr[j]){i++;j++;}elsej=nextval[j];}if (j==plen)return true;return false;
}int main()
{while (~scanf("%s%s",str,pstr)){int len=strlen(str);for (int i=0;i<len;i++)str[len+i]=str[i];str[len+i]='\0';get_nextval();if (KMP())printf("yes\n");elseprintf("no\n");}return 0;
}
/*
AABCD
CDAA
ASD
ASDF
*/

版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/gcczhongduan/p/4710998.html

亲串 (hdu 2203 KMP)相关推荐

  1. KMP算法 hdu 1711 hdu 2203

    mark一下,重新温习了 KMP KMP复杂度O(n+m) 这里有一个解释的超级的好的博客,大家可以去看一下:http://blog.csdn.net/v_july_v/article/details ...

  2. 【HDU - 2203】 亲和串 (思维题,可选KMP)

    题干: Problem Description 人随着岁数的增长是越大越聪明还是越大越笨,这是一个值得全世界科学家思考的问题,同样的问题Eddy也一直在思考,因为他在很小的时候就知道亲和串如何判断了, ...

  3. hdu 2594 kmp

    这个题和kmp算法的共同点,也就是可以用kmp解的原因,在于当前缀所在串(kmp中的模式串)字符pj≠后缀所在串(kmp中文本串)字符tj时,应使前缀串(kmp中模式串)尽量往右移动最大位移,而暴力算 ...

  4. HDU 2087 (KMP不可重叠的匹配) 花布条

    题意: 用两个字符串分别表示布条和图案,问能从该布条上剪出多少这样的图案. 分析: 毫无疑问这也是用KMP匹配,关键是一次匹配完成后,模式串应该向后滑动多少. 和上一题 HDU 1686 不同,两个图 ...

  5. 数据结构实验之串三:KMP应用

    Description 有n个小朋友,每个小朋友手里有一些糖块,现在这些小朋友排成一排,编号是由1到n.现在给出m个数,能不能唯一的确定一对值l和r(l <= r),使得这m个数刚好是第l个小朋 ...

  6. hdu 2594(kmp)

    1 /* 2 * KMP 3 * 思路:把两个串连接,然后求next[]数组值 4 * 注意:当两个串都是重复串且重复子串一样是,要特殊处理 5 */ 6 7 #include <cstdio& ...

  7. java中KMP模式,Java数据结构-串及其应用-KMP模式匹配算法

    串(string)是由零个或多个宇符组成的有限序列,又名叫字符串. 定义的解释: ??串中的字符数目n称为串的长度,定义中谈到"有限"是指长度n是一个有限的数值. ??零个字符的串 ...

  8. HDU 2203 水过

    亲和串 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  9. HDU 1686 [KMP]

    题目链接 思路:本题需要求出模式串在主串里的出现次数,利用KMP求出即可 /* --------------KMP算法-------------- 用于在字符串S中匹配字符串T本题利用KMP算法进行匹 ...

  10. HDU 1686 [KMP] --by二汪

    题目链接 /* --------------KMP算法-------------- 用于在字符串S中匹配字符串T注: 此模板的字符串都是从第0位开始存的 但返回和输出的位置都是以第1位为开始的!! * ...

最新文章

  1. css 子元素设置float,父元素高度塌陷
  2. 超经典的存储过程分页 ;-) 引自CSDN网友所作
  3. 设计模式——建造者模式
  4. SAP ABAP bcset激活时,关联的数据库表条目是如何插入的
  5. 提里奥·弗丁(魔兽世界里的NPC)
  6. gradle跟pom_Gradle多项目构建–父pom式结构
  7. python访问网页速度_python实现用于测试网站访问速率的方法
  8. 使用ModelArts自动学习完成猫狗声音分类
  9. kafka linux根目录满,Linux磁盘空间满的诡异问题解决方案
  10. Jade模板引擎教程
  11. ELAS_ROS算法 在 KITTI数据集 实践
  12. OpenJudge NOI题库 入门 116题 (三)
  13. 计算机系统关机后自动重启,小白教你电脑关机后自动重启是什么原因
  14. 莫名其妙把电脑机箱左边耳机孔弄出来声音
  15. networkx —— 基本操作及画图
  16. 微分,变分,差分的确切定义与区别
  17. 最好PDF软件汇总070623
  18. FineBI连接本地Mysql数据库
  19. ROS——一文读懂:param参数
  20. 2022华为开发者大赛北区决赛在1024程序员节北京峰会成功举行

热门文章

  1. python2 输出\n 不要换行
  2. Swagger2 忽略某些参数使其不出现在接口文档中
  3. JDBC学习(三、DDL、DML和DQL)
  4. 八、面向对象三大特征(二)—— 继承
  5. 两台服务器centos7.x 直接文件共享,文件挂载 nfs
  6. LayaAir 快捷键设置与资源命名规则
  7. Git 命令 checkout、reset、revert、reflog 、merge 使用介绍
  8. 数据库索引介绍及使用
  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_6_字节输出流写多个字节的方法...
  10. 【实战】Axis2后台Getshell