博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HDOJ】1867 A + B for you again
阅读量:7112 次
发布时间:2019-06-28

本文共 1721 字,大约阅读时间需要 5 分钟。

KMP算法的应用。

1 #include 
2 #include
3 4 #define MAXNUM 100005 5 6 char src[MAXNUM], des[MAXNUM]; 7 char src1[MAXNUM*2], des1[MAXNUM*2]; 8 int next[MAXNUM]; 9 10 void getnext(char *p, int *next, int len) {11 int j, k;12 j = 0;13 k = -1;14 next[0] = -1;15 while (j+1 < len) {16 if (k==-1 || p[j]==p[k]) {17 ++j;18 ++k;19 if (p[j] == p[k])20 next[j] = next[k];21 else22 next[j] = k;23 } else {24 k = next[k];25 }26 }27 }28 29 int kmp(char *src, char *des, int lens, int lend) {30 int i, j;31 32 i = j = 0;33 memset(next, 0, sizeof(next));34 getnext(des, next, lend);35 while (i < lens) {36 while (src[i] != des[j]) {37 if (next[j] == -1) {38 j = 0;39 break;40 }41 j = next[j];42 }43 if (src[i] == des[j])44 ++j;45 ++i;46 }47 48 return j;49 }50 51 int main() {52 int i, j, k;53 char *p, *q;54 int lens, lend;55 56 while (scanf("%s %s", src, des) != EOF) {57 lens = strlen(src);58 lend = strlen(des);59 j = kmp(src, des, lens, lend);60 k = kmp(des, src, lend, lens);61 if (j == k) {62 strcpy(src1, src);63 for (i=j; i
k) {77 p = src;78 q = des;79 } else {80 p = des;81 q = src;82 j = k;83 }84 printf("%s", p);85 printf("%s\n", q+j);86 }87 88 return 0;89 }

 

转载于:https://www.cnblogs.com/bombe1013/p/3693906.html

你可能感兴趣的文章
UVA 10081 Tight Words
查看>>
php curl常见错误:SSL错误、bool(false)
查看>>
23个全屏照片为背景的网站
查看>>
浅析Windows操作系统中的线程局部存储(TLS)机制
查看>>
HTTP
查看>>
FaceBook的NoScript策略
查看>>
QC+SQL2005,连接数据库时提示"属性不正确"
查看>>
基于CentOS的Linux基本网络配置,包括网卡eth0、DNS、Host等
查看>>
[转载]从今天开始,调试脚本,远离alert
查看>>
pku 1442 Black Box 优先队列
查看>>
Emacs学习笔记(9):org-mode,最好的文档编辑利器,没有之一
查看>>
.NET设计规范二:类型成员设计
查看>>
Flash Builder4.6 无法启动,并且报 Failed to create the Java Virtual Machine(1-不行的话可以参考下2)...
查看>>
责任链模式
查看>>
select 下的option删除,复制,修改
查看>>
QML与c++交互学习笔记(八) qt c++直接调用QML中的函数, 直接设置属性
查看>>
QT VS配置UNICODE问题
查看>>
Web基础知识和技术
查看>>
各种操作系统
查看>>
Angularjs调用公共方法与共享数据
查看>>