Poj--3080Blue Jeans+KMP水題
題目連結:點選進入
大概的題意就是給n個字串,然後讓我們找出他們的最長的公共子串。
因為題目的資料比較小,我們可以列舉第一個串的所有子串,然後再用KMP判斷一下這個子串是否出現在其它字串中。
程式碼如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=100;
///x是模式串,m是長度,next是模式串對應的next陣列
void kmp_pre(char x[],int m,int next[])
{
int i,j;
j=next[0]=-1;
i=0;
while(i<m)
{
while(-1!=j&&x[i]!=x[j])
j=next[j];
next[++i]=++j;
}
}
int next[maxn];
///x是模式串,y是主串
bool KMP_count(char x[],int m,char y[],int n)
{
int i,j;
int ans=0;
kmp_pre(x,m,next);
i=j=0;
while(i<n)
{
while(-1!=j&&y[i]!=x[j])
j=next[j];
i++;j++;
if(j>=m)
return true;
}
return false;
}
char ans[maxn];
char str[20][maxn];
int main()
{
int t;
freopen("in.txt","r",stdin);
scanf("%d",&t);
bool flag;
char x[maxn];
while(t--)
{
int n,k;
flag=false;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%s",str[i]);
int len=strlen(str[0]);
for(int i=0;i<len;i++)
{
int cnt=0;
x[cnt++]=str[0][i];
for(int j=i+1;j<len;j++)
{
x[cnt++]=str[0][j];
for(k=1;k<n;k++)
{
if(!KMP_count(x,cnt,str[k],strlen(str[k])))
break;
}
if(k>=n)
{
if(!flag||cnt>strlen(ans))
{
x[cnt]='\0'; ///必須自己加上字串結束標誌
strcpy(ans,x);
flag=true;
}
else
{
x[cnt]='\0';
if(cnt==strlen(ans)&&strcmp(x,ans)<0)
strcpy(ans,x);
}
}
}
}
if(!flag||strlen(ans)<3)
{
printf("no significant commonalities\n");
continue;
}
printf("%s\n",ans);
}
return 0;
}
相關文章
- 3 月水題練習
- 二叉排序樹(水題)排序
- NOIP水題合集[3/未完待續]
- hdu2045 遞迴水題遞迴
- 組合數學水題 $19$ 道
- Leetcode_455_分發餅乾_水題LeetCode
- 智慧水務系統:構建高效節水的城市水網
- (hnust 1208)Problem C: Primary Arithmetic(水題)
- 今日水
- CodeForces - 976A:Minimum Binary Number(水題)
- leedcode每日一題:860. 檸檬水找零每日一題
- POJ 3566 Building for UN (無腦構造 水題)UI
- 數木莫系且的旭醬買水問題
- 2013長沙網路賽 E題(水題 有點小bug)
- Link-Cut Tree(LCT) 模板總結 & 水題/模板題 動態樹
- 水的特性
- 儀器儀表水銀,水銀溫度計,水銀體溫計,水銀鍍金,汞的價格,水銀回收處理,淘砂金專用水銀
- LeetCode每日一題: 檸檬水找零(No.860)LeetCode每日一題
- USACO(含training section)水題合集[5/未完待續]AI
- ACM HDU 1279 驗證角谷猜想(簡單水題)ACM
- 架構高可用之限流-抽刀斷水水更流架構
- 【水汐の編譯原理】 詞法分析器 課題1編譯原理詞法分析
- POJ 2823Sliding Window(單調佇列水題)佇列
- 向水學習
- 超級膠水
- 水師提督速成指南:用Keras打造你的AI水軍KerasAI
- Tita智慧濾水壺:全家健康飲水靠它就夠了
- 記一次面試題:一千瓶水有一瓶毒藥面試題
- 運用TRIZ解決實驗室凝露和滲水問題
- Codeforces A. Add Candies (#683 Div.2 by Meet IT) (思維 / 水題)
- Statista:全球7.5億人仍沒沒有解決飲水問題
- GravityFlow2自動換水魚缸:養魚不用換水
- 水水的證件-身份證、證件加水印小工具
- python字串-水哥Python字串
- 熱水鍋爐控制系統 分時段控制水溫和水位
- 汞批發,水銀銷售價格,淘砂金專用水銀,廢水銀回收,回收處理汞,水銀回收
- 無水乾貨-如何快速分析Linux伺服器的效能問題Linux伺服器
- 除了效能縮水還有啥問題?盤點iOS升級的大坑iOS