P1019 單詞接龍(DFS 回溯)

2021-08-21 12:41:25 字數 976 閱讀 9739

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

輸入格式:

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

輸出格式:

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

輸入樣例#1:複製

5

attouch

cheat

choose

tact

a

輸出樣例#1:複製

23
(連成的「龍」為atoucheatactactouchoose)

noip2000提高組第三題

注意以下兩點(題目可能沒描述清楚)

1.計算兩個單詞重複長度的時候取最短!

2.可以存在包含狀態,要取最短

下面附上**

#include #include using namespace std;

typedef long long ll;

ll n,ans=-1; //ans為最大長度

struct why //結構體來存單詞和單詞出現的次數

a[25];

void dfs(string first,ll len) //傳入單詞與當前長度

P1019 單詞接龍(dfs)

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

P1019 單詞接龍 DFS

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

P1019 單詞接龍 C DFS 回溯

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