POJ3080方法很多(暴力,KMP,后缀数组,DP)
来源:互联网 发布:iphone照片导入mac air 编辑:程序博客网 时间:2024/06/02 13:22
题意:
给n个串(n>=2&&n<=10),每个串长度都是60,然后问所有串的最长公共子串,如果答案不唯一输出字典序最小的。
给n个串(n>=2&&n<=10),每个串长度都是60,然后问所有串的最长公共子串,如果答案不唯一输出字典序最小的。
思路:直接暴力,枚举+KMP,后缀数组
枚举+KMP#include<stdio.h>#include<string.h>char a[12][62] ,b[62];int next[62];void Get_Next(char b[]){ int m = strlen(b); int j = 0 ,k = -1; next[0] = -1; while(j < m) { if(k == -1 || b[j] == b[k]) next[++j] = ++k; else k = next[k]; } return ;}bool KMP(char a[] ,char b[]){ int n = strlen(a); int m = strlen(b); int i ,j; for(i = j = 0 ;i < n ;) { if(a[i] == b[j]) { if(j == m - 1) return 1; i ++ ,j ++; } else { j = next[j]; if(j == -1) i ++ ,j = 0; } } return 0;}int main (){ int t ,n ,i ,j ,k ,mk; scanf("%d" ,&t); char ans[62]; while(t--) { scanf("%d" ,&n); for(i = 1 ;i <= n ;i ++) scanf("%s" ,a[i]); for(mk = i = 0 ;i < 60 ;i ++) for(j = i ;j < 60 ;j ++) { for(k = i ;k <= j ;k ++) b[k-i] = a[1][k]; b[j-i+1] = '\0'; Get_Next(b); for(k = 2 ;k <= n ;k ++) if(!KMP(a[k] ,b)) break; if(k == n + 1) { if(!mk || strlen(b) > strlen(ans) || strlen(b) == strlen(ans) && strcmp(b ,ans) < 0) { int len = strlen(b); for(k = 0 ;k <= len ;k ++) ans[k] = b[k]; mk = 1; } } } if(!mk || strlen(ans) < 3) printf("no significant commonalities\n"); else printf("%s\n" ,ans); } return 0;}
0 0
- POJ3080方法很多(暴力,KMP,后缀数组,DP)
- 后缀数组(多个穿的最长公共子串)+KMP+poj3080
- poj3080 (二分+后缀数组)简单题
- POJ3080 Blue Jeans(kmp & 暴力)
- POJ3080 Blue Jeans(暴力kmp)
- POJ3080:Blue Jeans(后缀数组)
- POJ3080《Blue Jeans》方法:暴力
- POJ3080 Blue Jeans 【KMP 暴力水过】
- HDU 5763Another Meaning (DP+KMP||后缀数组)
- poj3080 Blue Jeans(后缀数组+二分答案)
- POJ 1226 Substrings KMP暴力 或 后缀数组
- POJ 1226 后缀数组 或 KMP 或 暴力
- poj3080(kmp)
- poj3080 kmp
- Blue Jeans(poj3080,后缀数组,求最长公共子串)
- HDU 3336 Count the string 后缀数组 或 (KMP + DP)
- HDU 4552 怪盗基德的挑战书 (KMP + DP) 或 后缀数组
- POJ3080-Blue Jeans(KMP,水)
- 几个 Spotlight的下载地址和注册码
- Leetcode之word search
- 线段相交的判断
- OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
- 通过 OLE 上传资料
- POJ3080方法很多(暴力,KMP,后缀数组,DP)
- POJ 2976 Dropping tests (最大化平均值)
- Android开发:本地视频播放器
- HDU 4081 最小生成树+dfs
- 基于 Android NDK 的学习之旅-----环境搭建
- UITabBarControler解决旋转问题
- 日常
- ui设计培训机构哪家好*
- eclipse C/C++执行scanf优先于printf