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 ...
随机推荐
- 树莓派 raspberry 入门之安装操作系统以及配置
最近新入手一树莓派,型号是2代B,屏幕是微雪的7 inch c型 显示屏.下面来教大家怎么点亮树莓派. 第一步,装好显示器,显示器的电源接在树莓派的usb口上,HDMI口不多说,连上.然后装好鼠标.键 ...
- Git权威指南 读笔(2)
第七章 Git重置: Git提供了一个挽救机制,通过.git/logs目录下日志文件记录了分支的变更. master分支的日志文件.git/logs/refs/heads/master,显示最后5行: ...
- 正则表达式中的\n
搜索文件中的字符,希望每次从每行的开始进行匹配. 所以在表达式开头加了\n 结果发现怎么都匹配不了. string regEx = @"\n\d*\s*!\s*TESTNAME” 最后,偶然 ...
- 基于strpos()函数的判断用户浏览器方法
$_SERVER['HTTP_USER_AGENT'],超全局变量,用来读取客户用的什么浏览器及其版本. strpos(),指定一个字符并搜索是否包含该字符. <html> <hea ...
- [JavaScript] 怎么使用JS禁止复制粘贴
1. 将彻底屏蔽鼠标右键,其实是禁止快捷菜单,因为不光右键可以弹出这个菜单,键盘上空格键右边的windows键也可以激活这个快捷菜单 <table border oncontextmenu=re ...
- android对大图片的缓存处理
废话不多说,直接上代码 package com.huge.emj.common.util; import java.io.File; import java.io.FileInputStream; i ...
- 环信_EaseUI 使用指南
EaseUI 使用指南 简介 EaseUI 封装了 IM 功能常用的控件(如聊天会话.会话列表.联系人列表).旨在帮助开发者快速集成环信 SDK. 源码地址: EaseUI:https://githu ...
- 李洪强漫谈iOS开发[C语言-017]-printf函数
- Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS
http://blog.csdn.net/hice1226/article/details/6717354 Mpeg-2的同步及时间恢复--STC,PCR,DTS,PTS 摘要:Mpeg-2同步及时间 ...
- NGUI所见即所得之UIAtlasMaker , UIAtlas (2)
本文的重点就是要将NGUI把多张图片打成一个图集(Atlas)的原理和过程研究下,学习下Unity提供的api和NGUI写的功能以及设计思想. (原文链接) 其它链接:NGUI所见即所得之UIRoot ...