POJ 3450 Corporate Identity kmp+最长公共子串
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<string>
#include<cmath>
#include<vector>
using namespace std;
const int maxn=1e5+;
const double eps=1e-;
const double pi=acos(-);
const int inf = 0x3f3f3f3f;
#define ll long long
#define clc(a,b) memset(a,b,sizeof(a)) int next[];
char str[][]; void getnext(char *t)
{
int i=,j=-;
int len=strlen(t);
next[]=-;
while(i<len)
{
if(t[i]==t[j]||j==-)
{
i++;
j++;
next[i]=j;
}
else
j=next[j];
}
} int kmp(char *s,char *t)
{
int lens=strlen(s);
int lena=strlen(t);
int i=,j=;
while(i<lens&&j<lena)
{
if(s[i]==t[j]||j==-)
{
i++;
j++;
}
else
j=next[j];
}
if(j<lena)
return -;
return i-lena;
} int main()
{
int n,len;
while(cin>>n&&n)
{
char tmp[];
int minn=inf;
for(int i=;i<n;i++)
{
scanf("%s",str[i]);
len=strlen(str[i]);
if(minn>len)
{
minn=len;
strcpy(tmp,str[i]);
}
}
len=strlen(tmp);
char p[];
char f[]={};
int ans=;
for(int i=;i<=len;i++)
{
int cnt;
for(int j=;j+i<=len;j++)
{
cnt=;
strncpy(p,tmp+j,i);
p[i]='\0';
getnext(p);
for(int k=;k<n;k++)
{
if(kmp(str[k],p)!=-)
{
cnt++;
}
else
break;
}
if(cnt==n)
{
ans++;
if(strlen(f)<strlen(p))
strcpy(f,p);
else if(strcmp(f,p)>)
strcpy(f,p);
}
}
}
if(ans==)
printf("IDENTITY LOST\n");
else
printf("%s\n",f);
}
}
POJ 3450 Corporate Identity kmp+最长公共子串的更多相关文章
- POJ 3450 Corporate Identity KMP解决问题的方法
这个问题,需要一组字符串求最长公共子,其实灵活运用KMP高速寻求最长前缀. 请注意,意大利愿父亲:按照输出词典的顺序的规定. 另外要提醒的是:它也被用来KMP为了解决这个问题,但是很多人认为KMP使用 ...
- POJ 3450 Corporate Identity(KMP)
[题目链接] http://poj.org/problem?id=3450 [题目大意] 求k个字符串的最长公共子串,如果有多个答案,则输出字典序最小的. [题解] 我们对第一个串的每一个后缀和其余所 ...
- POJ 2774 Long Long Message [ 最长公共子串 后缀数组]
题目:http://poj.org/problem?id=2774 Long Long Message Time Limit: 4000MS Memory Limit: 131072K Total ...
- POJ 3450 Corporate Identity (KMP,求公共子串,方法很妙)
http://blog.sina.com.cn/s/blog_74e20d8901010pwp.html我采用的是方法三. 注意:当长度相同时,取字典序最小的. #include <iostre ...
- poj 3450 Corporate Identity
题目链接:http://poj.org/problem?id=3450 题目分类:后缀数组 题意:求n个串的最长公共字串(输出字串) //#include<bits/stdc++.h> # ...
- POJ 3080 Blue Jeans 找最长公共子串(暴力模拟+KMP匹配)
Blue Jeans Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20966 Accepted: 9279 Descr ...
- POJ 3450 Corporate Identity (KMP+暴搞)
题意: 给定N个字符串,寻找最长的公共字串,如果长度相同,则输出字典序最小的那个. 找其中一个字符串,枚举它的所有的字串,然后,逐个kmp比较.......相当暴力,可二分优化. #include & ...
- POJ 3450 后缀数组/KMP
题目链接:http://poj.org/problem?id=3450 题意:给定n个字符串,求n个字符串的最长公共子串,无解输出IDENTITY LOST,否则最长的公共子串.有多组解时输出字典序最 ...
- POJ3450最长公共子串【kmp】
题目链接:http://poj.org/problem?id=3450 题目大意:给定n个长度不超过200的字符串,n < 4000.求这些字符串的最长公共子串,若没有,则输出 “IDENTIT ...
随机推荐
- jquery 里面的$(document).ready 和 DOMContentLoaded
DOMContentLoaded 事件是当页面的初始dom tree加载好了就会执行. 而不会去等待外部的css 渲染完成和 js执行完成,即下图中的DOM Tree阶段 DOMContentLoad ...
- 使用openxml读取xml数据
xml的数据格式如下: <?xml version="1.0"?> <Language Name="Chinese"> <Loca ...
- [转]python 之字典{}(Hashmap)
字典 python里的字典就像java里的HashMap,以键值对的方式存在并操作,其特点如下 通过键来存取,而非偏移量: 键值对是无序的: 键和值可以是任意对象: 长度可变,任意嵌套: 在字典里,不 ...
- Sublime Text 3插件之SublimeTmpl:新建文件的模版插件
SublimeTmpl能新建html.css.javascript.php.python.ruby六种类型的文件模板,所有的文件模板都在插件目录的templates文件夹里,可以自定义编辑文件模板. ...
- 原生 JavaScript 图片裁剪效果
图片裁剪程序效果如下,可鼠标操作. 拖动左边小方框时在右侧实时显示对应的裁剪图片,同时左侧的拖动框里图片完全显示,拖动框外部图片模糊显示.8个控制点可以对显示区域大小进行控制. HTML 和 CS ...
- jersey post提交到 ContainerRequestFilter 而HttpServletRequest获取不到数据(转)
jersey post提交到 ContainerRequestFilter 而HttpServletRequest获取不到数据 问题:在serverfilter request获取不到post提交的 ...
- 关于怎样拆毁Cuttheprice
最近我的chrome浏览器被一个叫cuttheprice的插件病毒感染了,总是弹出广告,真是让人抓狂,本来最近几天在复习算法,准备面试的,昨天忍了过去,今天实在受不了了,于是就干掉它吧.说干就干,刚开 ...
- 当 ITOA 遇上 OneAlert,企业可以至少每年节省 3600 小时!
每个工作日,一家大型企业都可能存在一两件优先级为 1 级的事件,五六件优先级为 2 级的事件和百来件优先级为 3 级的事件.试想一下,如果公司所有支持人员都要收到每个事件的通知--不想了,我好方!还能 ...
- 服务器部署_nginx的host not found in upstream "tomcat_www.bojinne" 错误解决办法
今天修改了nginx.conf之后,nginx-t报错. 1. 网上多认为此错误需要修改/etc/hosts,添加该域名对应的ip 2. 我自己的解决方案是仔细核对 upstream 后面的字符 和 ...
- jav利用反射修改类的静态变量
有Student这个类: public class Student { private static String schoolName=""; private static St ...