HDU 1841: Find the Shortest Common Superstring
2015-07-30 15:52
501 查看
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; char a[2000005],b[2000005]; int nextd[2000010]; void get(char *ch) { int l = strlen(ch); int s = 0,t = -1; nextd[0] = -1; while(s <l) { if(t == -1|| ch[s] == ch[t]) { t++; nextd[++s] = t; } else t = nextd[t]; } } int kmpd(char *ch1,char *ch2) { get(ch2); int l1 = strlen(ch1); int l2 = strlen(ch2); int s = 0,t = 0; int ma=0; while(s <l1&&t<l2) { if(t == -1 || ch1[s] == ch2[t]) { t++; s++; } else t = nextd[t]; } return t; } int main() { int i,j,k,n,m,l; while(~scanf("%d",&n)) { while(n--) { scanf("%s %s",a, b); int la = strlen(a); int lb = strlen(b); int l1 = kmpd(a, b); int l2 = kmpd(b, a); //printf("%d %d\n",l1,l2); printf("%d\n",la + lb - max(l1,l2)); } } return 0; }
[/code]
相关文章推荐
- linux授权用户、组、权限
- poj-1573-Robot Motion--模拟
- 浏览器记录当前的位置信息
- IOS 多线程 RUNLOOP 机制 (一)
- HDOJ 1869 六度分离
- android开发之Parcelable使用详解
- android开发之Parcelable使用详解
- C#生成Code39条形码【非条形码字体】
- android 画图用到的DrawFilter
- hadoop2.7.1伪分布式配置
- Oracle ASM 相关的 视图(V$) 和 数据字典(X$)
- 前缀中缀后缀表达式
- C#生成Code39条形码【非条形码字体】
- 黑马程序员 日记(八)
- ubuntu14.04安装ffmpeg
- 南阳oj 一种排序 题目8
- Android Splash 页面
- 多个excel文档合并到一个excel文档里
- C++学习笔记(四)
- Servlet实现图片验证码