hdu_2328_Corporate Identity(暴力枚举子串+KMP)
题目链接: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)的更多相关文章
- poj 3080 Blue Jeans (暴力枚举子串+kmp)
Description The Genographic Project is a research partnership between IBM and The National Geographi ...
- 字符串截取模板 && POJ 3450、3080 ( 暴力枚举子串 && KMP匹配 )
//截取字符串 ch 的 st~en 这一段子串返回子串的首地址 //注意用完需要根据需要最后free()掉 char* substring(char* ch,int st,int en) { ; c ...
- hdu-2328(暴力枚举+kmp)
题意:给你n个字符串,问你这n个串的最长公共子串 解题思路:暴力枚举任意一个字符串的所有子串,然后暴力匹配,和hdu1238差不多的思路吧,这里用string解决的: 代码: #include< ...
- hdu2328 Corporate Identity【string库使用】【暴力】【KMP】
Corporate Identity Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- POJ 3080 Blue Jeans (字符串处理暴力枚举)
Blue Jeans Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21078 Accepted: ...
- CodeForces 742B Arpa’s obvious problem and Mehrdad’s terrible solution (暴力枚举)
题意:求定 n 个数,求有多少对数满足,ai^bi = x. 析:暴力枚举就行,n的复杂度. 代码如下: #pragma comment(linker, "/STACK:1024000000 ...
- 2014牡丹江网络赛ZOJPretty Poem(暴力枚举)
/* 将给定的一个字符串分解成ABABA 或者 ABABCAB的形式! 思路:暴力枚举A, B, C串! */ 1 #include<iostream> #include<cstri ...
- HNU 12886 Cracking the Safe(暴力枚举)
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12886&courseid=274 解题报告:输入4个数 ...
- 51nod 1116 K进制下的大数 (暴力枚举)
题目链接 题意:中文题. 题解:暴力枚举. #include <iostream> #include <cstring> using namespace std; ; ; ch ...
随机推荐
- js实现购买数量加减效果
写在前面:当我们需要在多个页面都有操作数量的需求时的一种解决方案 结构: js代码: <script type="text/javascript"> function ...
- Jquery 操作DropDownList 根据条件选中
$("#<%=DDLCounty.ClientID%> option").each(function () { if ($(this).text() == $(&quo ...
- pack://application:,,,/
FrameworkElementFactory gridFactory = new FrameworkElementFactory(typeof(Grid)); gridFactory.SetValu ...
- Winform ComBox模糊查询
一.添加数据源并绑定 List<string> list = new List<string>(); list.Add("张三"); list.Add(&q ...
- EmbossMaskFilter BlurMaskFilter 学习
MaskFilter类可以为Paint分配边缘效果.对MaskFilter的扩展可以对一个Paint边缘的alpha通道应用转换.Android包含了下面几种MaskFilter: BlurMaskF ...
- 浏览器的云加速可能导致IP统计异常
前段时间弄个流量统计相关的东西,请求展示图片时根据请求的IP进行 md5 签名生成点击链接的验证参数,结果发现一个莫名其妙的问题 发现点击日志中有一小部分点击的IP居然不一致,如果是开放给别人用可能存 ...
- 爬虫代码实现五:解析所有分页url并优化解析实现类
如图,我们进入优酷首页,可以看到电视剧列表,我们称这个页面为电视剧列表页,而点击进入某个电视剧,则称为电视剧详情页.那么如何获取所有分页以及对应的详情页呢,通过下面的分页得到. 因此,首先,我们将St ...
- springmvc注释
//请求json串(商品信息) 输出json(商品信息) //@RequestBody将请求的商品信息的json串转成itemsCustom对象 //@ResponseBody将itemsCus ...
- c:set 存值
<c:forEach items="${appoint}" var="appoint"> <c:set var="begin&quo ...
- win7安装omnetpp-4.6
最近做毕设要用omnet仿真系统,就试着在win7上装了一下,分享一下经验咯.因为lz经常刷机,所以安装过程都是从头再来的,费话不多说.下面是安装过程: (1) 安装jdk,我就百度一下,然后找 ...