题目链接:hdu_2328_Corporate Identity

题意:

给你n个串,让你找这n个串的最大公共子串

题解:

串比较小,暴力枚举第一个的子串,然后KMP判断是否可行

 #include<cstdio>
#include<cstring>
#define F(i,a,b) for(int i=a;i<=b;i++) const int N=;
int nxt[N],n,lens[],ans,l,r,cnt;
char dt[][N]; int KMP(int n,char*a,int m,char*b){
int i,j;
for(nxt[]=j=-,i=;i<n;nxt[i++]=j){
while(~j&&a[j+]!=a[i])j=nxt[j];
if(a[j+]==a[i])j++;
}
for(j=-,i=;i<m;i++){
while(~j&&a[j+]!=b[i])j=nxt[j];
if(a[j+]==b[i])j++;
if(j==n-)return ;
}
return ;
} inline void up(int &a,int b){if(a<b)a=b;}
inline void update(int L,int R){
if(R-L+>ans)l=L,r=R,ans=r-l+;
else if(R-L+==ans)
{
for(int i=l,j=L;;i++,j++){
if(dt[][i]!=dt[][j]){
if(dt[][i]<dt[][j])return;
else{
l=L,r=R;
return;
}
}
if(i==r)return;
if(j==R)l=L,r=R;
}
}
} int main(){
while(~scanf("%d",&n),n)
{
F(i,,n)scanf("%s",dt[i]),lens[i]=strlen(dt[i]);
char tp[];
ans=-,l=,r=,cnt=;
F(i,,lens[]-)F(j,i+cnt,lens[]-)
{ int ed=,fg=;
F(ii,i,j)tp[ed++]=dt[][ii];
F(ii,,n)if(KMP(j-i+,tp,lens[ii],dt[ii])==){fg=;break;}
if(fg)update(i,j),cnt=ans<?:ans-;//剪枝,每次只找大于ans的
}
if(ans==-)puts("IDENTITY LOST");
else {F(i,l,r)printf("%c",dt[][i]);puts("");}
}
return ;
}

hdu_2328_Corporate Identity(暴力枚举子串+KMP)的更多相关文章

  1. poj 3080 Blue Jeans (暴力枚举子串+kmp)

    Description The Genographic Project is a research partnership between IBM and The National Geographi ...

  2. 字符串截取模板 && POJ 3450、3080 ( 暴力枚举子串 && KMP匹配 )

    //截取字符串 ch 的 st~en 这一段子串返回子串的首地址 //注意用完需要根据需要最后free()掉 char* substring(char* ch,int st,int en) { ; c ...

  3. hdu-2328(暴力枚举+kmp)

    题意:给你n个字符串,问你这n个串的最长公共子串 解题思路:暴力枚举任意一个字符串的所有子串,然后暴力匹配,和hdu1238差不多的思路吧,这里用string解决的: 代码: #include< ...

  4. hdu2328 Corporate Identity【string库使用】【暴力】【KMP】

    Corporate Identity Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  5. POJ 3080 Blue Jeans (字符串处理暴力枚举)

    Blue Jeans  Time Limit: 1000MS        Memory Limit: 65536K Total Submissions: 21078        Accepted: ...

  6. CodeForces 742B Arpa’s obvious problem and Mehrdad’s terrible solution (暴力枚举)

    题意:求定 n 个数,求有多少对数满足,ai^bi = x. 析:暴力枚举就行,n的复杂度. 代码如下: #pragma comment(linker, "/STACK:1024000000 ...

  7. 2014牡丹江网络赛ZOJPretty Poem(暴力枚举)

    /* 将给定的一个字符串分解成ABABA 或者 ABABCAB的形式! 思路:暴力枚举A, B, C串! */ 1 #include<iostream> #include<cstri ...

  8. HNU 12886 Cracking the Safe(暴力枚举)

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12886&courseid=274 解题报告:输入4个数 ...

  9. 51nod 1116 K进制下的大数 (暴力枚举)

    题目链接 题意:中文题. 题解:暴力枚举. #include <iostream> #include <cstring> using namespace std; ; ; ch ...

随机推荐

  1. canvas实现画板功能(渐变、动画、阴影...)

    刚刚在博客园落户了,希望能在这认识更多大神,希望能和大家交好朋友. 闲来无事,把以前用canvas写的画板代码改进了一番,用Html5提供的表单标签给其 加了一个选择颜色的功能,因此发现了该标签的一个 ...

  2. 手动为maven的本地仓库添加JAR

    在要添加的jar所在的文件夹下打开黑屏 如添加Oracle的ojdbc6.jar 输入: mvn install:install-file -DgroupId=com.oracle -Dartifac ...

  3. android studio Activity标题栏研究

    第一次研究时间:2016/7/30,以下研究主要存在于当前最新版本的android studio上.eclipse请参考 一.头部标题取消 当前版本新建工程在 application中默认主题为 an ...

  4. shell中bash的常见命令

    shell 在计算机科学中,Shell俗称壳,用来区别Kernel(核) Shell分类:1:图形界面shell:通过提供友好的可视化界面,调用相应应用程序,如windows系列操作系统,Linux系 ...

  5. 主题模型 利用gibbslda做数据集主题抽样

    电子科技大学电子商务实验室Kai Yip,欢迎同行指正,也欢迎互相指导,学习. 广告打完,进入正题. 关于程序运行结果的分析请参照我的另一篇博客:http://www.cnblogs.com/nlp- ...

  6. sulime text3

    sublime text 3 详细说明--包括快捷键 sublime 插件安装 快捷键 sunlime (需要先安装package control,ctrl+shift+p,输入insall之后安装插 ...

  7. iOS参考工具和资源

    图片: Glyphish(图标资源) 资源: SwiftGuide:这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排. 27款iOS开源库,让你的开发溜到飞起 创业者的新春礼包—优秀 ...

  8. 【Python之路】第九篇--Python基础之线程、进程和协程

    进程与线程之间的关系 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除.线程可与属于同一进程的其它线程共享进程所拥有的全 ...

  9. maven打包配置

    maven打包配置,到底要打包哪些文件,如何配置?? <build> <finalName>weatherAdminSys</finalName> <plug ...

  10. CSS样式笔记

    组合样式,CSS继承 .content { padding:0 0 0 5px; line-height: 30px; height: 30px; border: 1px solid #a6bee7; ...