洛谷p1019 單詞接龍

2021-08-17 05:07:12 字數 1211 閱讀 3307

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」中出現兩次),在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部分不能存在包含關係,例如at 和 atide 間不能相連。

輸入輸出格式

輸入格式:

輸入的第一行為乙個單獨的整數n (n<=20)表示單詞數,以下n 行每行有乙個單詞,輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。你可以假定以此字母開頭的「龍」一定存在.

輸出格式:

只需輸出以此字母開頭的最長的「龍」的長度

輸入輸出樣例

輸入樣例#1

5

attouch

cheat

choose

tact

a

輸出樣例#1:

23
思路:先找出兩個單詞的最小公共部分(前乙個單詞的字尾和後乙個單詞的字首最小的重疊部分),

然後搜尋,搜尋的時候先找單詞第乙個字母是給出的字母的,搜尋後面的時候要保證相鄰的兩部分不能存在包含關係(重疊部分長度小於要相接的兩個單詞的長度),還有就是乙個單詞最多使用兩次

#include#include#includeusing namespace std;

string a[20];

int cl[20][20];//cl儲存兩個單詞的最小重疊長度

int visit[20];

int n;

int ans=0;

int commonlenth(string a,string b) //計算兩個單詞的最小重疊長度

else

}if(!flag)

minlen=min(minlen,k);

} return minlen==0x3f3f3f3f?0:minlen; }

void dfs(int lenth,int pre)

int x,y;

for(x=0;x>s;

for(i=0;icout<}

洛谷p1019單詞接龍

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbe ast 和 astonishas toni sh,如果接成一條龍則變為 be...

洛谷 P1019 單詞接龍

題目描述 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如be ast bea st 和astoni sha st onis h,如果接成一條...

洛谷 P1019 單詞接龍

洛谷 p1019 單詞接龍 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbeast和astonishastonish,如果接成一條...