hdu 1867 kmp匹配
#include<stdio.h>
#include<string.h>
#define N 100100
void getnext(int next[],char s[]) {
int k=-1,j=0;
next[0]=-1;
while(s[j]!=0) {
if(k==-1||s[j]==s[k]) {
j++;k++;
if(s[j]!=s[k])
next[j]=k;
else
next[j]=next[k];
}
else
k=next[k];
}
}
int kmpa(char t[],char T[],int next[]) {
int len ,i,j;
len=strlen(T);
j=0;i=0;
while(i!=len) {
if(t[j]==T[i])
i++,j++;
else {
j=next[j];
if(j==-1)
j=0,i++;
}
}
return j;
}
int main() {
int len1,len2;
int next1[N],next2[N];
char s1[N],s2[N];
while(scanf("%s%s",s1,s2)!=EOF) {
getnext(next1,s1);
len1=kmpa(s1,s2,next1);
getnext(next2,s2);
len2=kmpa(s2,s1,next2);
if(len1==len2) {
if(strcmp(s1,s2)>0)
printf("%s%s\n",s2,s1+len1);
else
printf("%s%s\n",s1,s2+len2);
}
if(len1>len2)
printf("%s%s\n",s2,s1+len1);
else
if(len1<len2)
printf("%s%s\n",s1,s2+len2);
}
return 0;
}
hdu 1867 kmp匹配的更多相关文章
- Hdu 1867 KMP
题目链接 题目意思: 给出两个字符串a, b, 求最长的公共字串c, c是a的后缀,也是b的前缀. 本题没有具体说明哪个字符串是文本串和匹配串, 所以都要考虑 思路: 查找的时候, 当文本串结束的时候 ...
- HDU 2087 HDU 1867 KMP标准模板题
贴两道题,其中HDU2087是中文题,故不解释题目, 思路是,一发KMP,但是特别处理最后一位的失配边为0,这样就可以保证“判断完成但是不多判断”. 第二题,很毒瘤的题,要求求出,给定字符串A,B能够 ...
- HDU 2087 (KMP不可重叠的匹配) 花布条
题意: 用两个字符串分别表示布条和图案,问能从该布条上剪出多少这样的图案. 分析: 毫无疑问这也是用KMP匹配,关键是一次匹配完成后,模式串应该向后滑动多少. 和上一题 HDU 1686 不同,两个图 ...
- HDU 2203 kmp
http://acm.hdu.edu.cn/showproblem.php?pid=2203 亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory ...
- hdu 1686 KMP模板
// hdu 1686 KMP模板 // 没啥好说的,KMP裸题,这里是MP模板 #include <cstdio> #include <iostream> #include ...
- 【poj 3167】Cow Patterns(字符串--KMP匹配+数据结构--树状数组)
题意:给2个数字序列 a 和 b ,问按从小到达排序后,a中的哪些子串与b的名次匹配. a 的长度 N≤100,000,b的长度 M≤25,000,数字的大小 K≤25. 解法:[思考]1.X 暴力. ...
- BNUOJ-26580 Software Bugs KMP匹配,维护
题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26580 题意:给一个模式串,然后m个匹配串,要求删掉匹配串中的所有存在的模式串,使得余下的 ...
- kmp匹配详解
字符串算法都是毒瘤的 一.kmp算法的用处 在文本串中查找模式串的位置,数量 文本串:要在这个字符串查找模式串 模式串:在文本串中查找的字符串 全是废话 二.kmp算法的思想 话说kmp好像是3个发明 ...
- Cyclic Nacklace HDU 3746 KMP 循环节
Cyclic Nacklace HDU 3746 KMP 循环节 题意 给你一个字符串,然后在字符串的末尾添加最少的字符,使这个字符串经过首尾链接后是一个由循环节构成的环. 解题思路 next[len ...
随机推荐
- (博弈论)51NOD 1072 威佐夫游戏
有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出2堆石子的数量, ...
- CSS布局大全
前几天面试,问我某布局感觉回答不是很OK所以研究了一下各种布局. 一.单列布局 1.普通布局(头部.内容.底部) <div class="container"> < ...
- UVa 101 - The Blocks Problem STL
题目:给你n个方块,有四种操作: .move a onto b,把a和b上面的方块都放回原来位置,然后把a放到b上面: .move a over b,把a上面的放回原处,然后把a放在b所在的方块堆的上 ...
- video 能播放声音不能播放视频,黑屏
与视频编码格式有关,mp4的视频编码有三种:MPEG4(DivX),MPEG4(Xvid),AVC(H264). 浏览器播放视频的支持有限,MP4格式的视频只支持h.264的视频: 视频编码: AVC ...
- hdu2031
http://acm.hdu.edu.cn/showproblem.php?pid=2031 #include<stdio.h> #include<math.h> #inclu ...
- HTML+CSS 基础布局(案列一)
刚html刚讲完马上就接着css,周末的任务就是高仿案例,结果有点遭 图文布局 代码 css(内部样式) html <!DOCTYPE html><html><head& ...
- CSS中可继承的属性
不可继承的属性太多了不要背,记住可以继承的属性有哪些就行了.可以继承的属性很少,只有颜色,文字,字体间距行高对齐方式,和列表的样式可以继承.这么来记很轻松的呀!不要被下边的吓到了哦~ 所有元素可继承: ...
- vuex的各个细节理解(因人而异)
应用级的状态集中放在store中: 改变状态的方式是提交mutations,这是个同步的事物: 异步逻辑应该封装在action中. const vuex_store = new Vuex.store( ...
- CPU位数、操作系统位数、机器字长、C/C++基本数据类型长度
1.CPU位数=CPU中寄存器的位数=CPU能够一次并行处理的数据宽度(位数)=数据总线宽度: //现在的计算机处理器一般都是64位,这是硬件的事. 2.CPU为了实现其功能设计了指令集,即是CPU的 ...
- Codeforces_768_D_(概率dp)
D. Jon and Orbs time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...