Blue Jeans - POJ 3080(多串的共同子串)
#include<stdio.h> #include<string.h>const int MAXN = 107; const int oo = 1e9+7;char s[MAXN][MAXN]; int next[MAXN];void GetNext(char s[]) {int i=0, j=-1, N=strlen(s);next[0] = -1;while(i < N){if(j==-1 || s[i]==s[j])next[++i] = ++j;elsej = next[j];} } bool KMP(char a[], char s[]) {int i=0, j=0;int Na=strlen(a), Ns = strlen(s);while(i < Na){while(j==-1 || (a[i]==s[j] && i<Na) )i++, j++;if(j == Ns)return true;j = next[j];}return false; }int main() {int T;scanf("%d", &T);while(T--){int i, j, len, M, MaxLen=60;char ans[MAXN] = "Z";scanf("%d", &M);for(i=0; i<M; i++)scanf("%s", s[i]);for(len=60; len>=3; len--)for(i=0; i<=MaxLen-len; i++){///枚举第一个串的所有子串char b[MAXN]={0};strncpy(b, s[0]+i, len);GetNext(b);for(j=1; j<M; j++){if(KMP(s[j], b) == false)break;}if(j==M && strcmp(ans, b) > 0)strcpy(ans, b);if(ans[0] != 'Z' && i==MaxLen-len)i=100, len = 0;///跳出循环 }if(ans[0] == 'Z')printf("no significant commonalities\n");elseprintf("%s\n", ans);}return 0; }
转载于:https://www.cnblogs.com/liuxin13/p/4731815.html
Blue Jeans - POJ 3080(多串的共同子串)相关推荐
- 暴力枚举(字符串匹配)-Blue Jeans POJ - 3080
暴力枚举(字符串匹配)-Blue Jeans POJ - 3080 题目: Genographic项目是IBM与国家地理学会之间的研究合作伙伴关系,该合作伙伴正在分析数十万贡献者的DNA,以绘制地球的 ...
- POJ 3080 Blue Jeans (KMP)
链接:http://poj.org/problem?id=3080 题目: Description The Genographic Project is a research partnership ...
- POJ - 3080 Blue Jeans(暴力+KMP)
题目链接:点击查看 题目大意:给出n组长度为60的字符串,问这n组中最长的公共连续子串是什么,若有多个不同的最长公共子串,输出字典序最小的那个 题目分析:一开始看到这个题目的时候我是没有想到暴力的.. ...
- poj 3080 Blue Jeans
#include <iostream> //KMP+枚举#include<string>using namespace std;#define len 60char str[1 ...
- POJ 3080 Blue Jeans (后缀数组)
题目大意: 求出这些DNA序列中的最长且字典序最小的公共子串. 思路分析: 二分长度的答案,去height中扫描这个长度是否满足,一旦满足就立即输出.这样就能够保证字典序最小了. #include & ...
- POJ 3080 - Blue Jeans
题意: 求所有串的最长公共子串,若有多个输出字典序最小的 分析: 对第一个串的每一个后缀分别与剩下的所有串进行匹配,求得公共子串 对每一个公共子串,记录下最大值即可. 1 #include <i ...
- POJ 3080 Blue Jeans (多个字符串的最长公共序列,暴力比较)
题意:给出m个字符串,找出其中的最长公共子序列,如果相同长度的有多个,输出按字母排序中的第一个. 思路:数据小,因此枚举第一个字符串的所有子字符串s,再一个个比较,是否为其它字符串的字串.判断是否为字 ...
- POJ 3080 多个串最长公共子序列
求多个串最长公共子序列,字典序最小输出.枚举剪枝+kmp.比较简单,我用find直接查找16ms #include<iostream> #include<string> #in ...
- [POJ3080 Blue Jeans]
[题目来源]:South Central USA 2006 [关键字]:字符串 [题目大意]:找出给所有字符串的最长公共字串. //================================== ...
- POJ3080 ZOJ2784 UVALive3628 Blue Jeans题解
代码来源:TYUT_YancyKahn AC的C++语言程序如下: #include <iostream> #include <cstring> #include <cs ...
最新文章
- AJAX俺也不会,是真的,不过,以后就会了
- 2015年绿盟面试题
- Android Studio 开发安卓软件时下载的工程项目 Sync with gradle 失败
- Oracle Database 20c 十大新特性一览
- Wazuh--一个完善的开源EDR产品
- Scala是多范式编程语言
- 数百GitHub私有代码库被黑客清空:不交赎金就公开源码!
- mysql 逻辑备份工具_MySQL逻辑备份工具-mydumper
- 乐优商城遇到的坑(四)之前台门户系统之Search.html
- 让 Alfred 支持拼音
- 自然语言处理NLP星空智能对话机器人系列:GavinNLP星空对话机器人Transformer课程片段1到片段4
- Base64 在线编码解码
- MPB:中科院南土所褚海燕组-结构方程模型在土壤微生态中的应用
- 抢购茅台,618只能用这种方法
- 没有 RunInstallerAttribute.Yes 的公共安装程序
- 深入理解PHP中的ob_flush和flush的区别
- Qt6.0+vs2019环境配置
- 2021ICPC沈阳游记及2021年度总结
- javaWeb项目不报错但网页报500错误
- “看到同事 2 万块的笔记本,我认输了”:会说话,才是码农该有的自我修养...