【Kmp】Blue Jeans POJ - 3080
Link:http://poj.org/problem?id=3080
//#include <bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long LL;
/*
題意:找出n個串中最長的公共串,並且要求字典序最大
題解:列舉第一字串的子串
*/
const int N = 66;
int nex[N];
void getnext(string s){
memset(nex,0,sizeof(nex));
int len = s.length();
nex[0] = -1;
int k = -1;
for(int i = 1; i < len; i++){
while(k!=-1 && s[k+1]!=s[i])
k = nex[k];
if(s[k+1]==s[i])
k++;
nex[i] = k;
}
}
bool Kmp(string s,string p){
int len = s.length();
int lenp = p.length();
int k = -1;
for(int i = 0; i < len; i++){
while(k!=-1 && p[k+1]!=s[i])
k = nex[k];
if(p[k+1]==s[i])
k++;
if(k == lenp-1)
return true;
}
return false;
}
struct asd{
string s;
}ans[N],now[N*N],aa[N];
bool cmp(asd a, asd b){
if(a.s.length() != b.s.length())
return a.s.length() > b.s.length();
return a.s < b.s;
}
int init(){
int len = aa[0].s.length();
int k = 0;
for(int leg = 3; leg <= len; leg++){
for(int i = 0; i+leg <= len; i++)
now[k++].s = aa[0].s.substr(i,leg);
}
return k;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> aa[i].s;
int k = init();
sort(now,now+k,cmp);
int f = 0;
for(int i = 0; i < k; i++)
{
//cout <<now[i].s << endl;
getnext(now[i].s);
int flag = 0;
for(int j = 1; j < n; j++){
if(!Kmp(aa[j].s,now[i].s))
flag = 1;
}
if(!flag)
{
f = 1;
cout << now[i].s << endl;
break;
}
}
if(!f) cout << "no significant commonalities" << endl;
}
return 0;
}
相關文章
- Poj--3080Blue Jeans+KMP水題KMP
- POJ 3080 Blue Jeans (KMP+暴力列舉)【模板】KMP
- Blue Jeans 【KMP+暴力】KMP
- poj3080-kmp+列舉子串 求最長公共子串KMP
- POJ 3461 kmpKMP
- POJ 1261 Period KMP (字串週期)KMP字串
- POJ3461-KMP演算法的簡單運用KMP演算法
- POJ2752--KMP求所有可能的相同字首字尾KMP
- POJ-1961 Period-KMP字首串重複次數KMP
- POJ--2406Power Strings+KMP求字串最小週期KMP字串
- POJ-3461 Oulipo-匹配的字元有幾個(KMP演算法)字元KMP演算法
- 【Kmp求既是字首又是字尾的子串】POJ - 2752 Seek the Name, Seek the FameKMP
- 【KMP思想求迴圈節】hdu 1358 hust 1010 poj 2406KMP
- 3080顯示卡怎麼樣 3080顯示卡可以玩什麼遊戲遊戲
- POJ 2406-Power Strings(重複子串-KMP中的next陣列)KMP陣列
- Blue Cat Audio Blue Cat PatchWork mac(藍貓橋接外掛)Mac橋接
- KMPKMP
- POJ 2752+KMP+利用next陣列性質求出所有相同的字首和字尾KMP陣列
- KMP演算法的next、next value陣列程式碼實現及POJ3461KMP演算法陣列
- KMP模版KMP
- kmp——板子~~~KMP
- KMP模板KMP
- [Blue Prism] Data item 的使用
- blue 老師 javascript 基礎JavaScript
- A implementaion for 2D blue noiseAI
- 多頻段調音臺:Blue Cat Audio Blue Cats MB-7 Mixer for macMac
- KMP&exKMPKMP
- 【字串匹配】KMP字串匹配KMP
- 專題十六 KMP & 擴充套件KMP & Manacher【Kuangbin】KMP套件
- KMP Algorithm 字串匹配演算法KMP小結KMPGo字串匹配演算法
- HDU 3080 The plan of city rebuild(prim和kruskal)Rebuild
- hihocoder 1015 KMP演算法 (KMP模板)KMP演算法
- KMP 自動機KMP
- JAVA KMP 純模板JavaKMP
- KMP演算法KMP演算法
- KMP 演算法KMP演算法
- win10啟動blue stacks很慢怎麼辦_win10啟動blue stacks很慢的修復方法Win10
- FZU 2275 Game (KMP)GAMKMP