題解 單詞接龍(DFS)

2022-09-18 16:33:11 字數 1056 閱讀 9583

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞

且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」**現兩次)

在兩個單詞相連時,其重合部分合為一部分,例如beast和astonish,如果接成一條龍則變為beastonish

另外相鄰的兩部分不能存在包含關係,例如at和atide間不能相連。

輸入的第一行為乙個單獨的整數n(n≤20)表示單詞數

以下n行每行有乙個單詞(只含有大寫或小寫字母,長度不超過20)

輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。

你可以假定以此字母開頭的「龍」一定存在。

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

輸入

5

attouch

cheat

choose

tact

a

輸出

連成的「龍」為 atoucheatactactouchoose

大致步驟

#include #include #include using namespace std;

int n, length = 0, vis[1000] = ;

string str[1000];

//返回a,b之中可以首尾相接的長度(長度越短,相接後的字串越長)

//此處有兩個特判

//一種是沒有重合長度,要返回0

//另一種是兩個字串中長度最小的長度為1,會直接返回0

inline int check(string a, string b)

if (flag == true) return i;

}return 0;

}//用dfs從1到n判斷這些字串能不能接上去

//(只要看兩個字串有沒有重疊部分就可以了)

void dfs(string s, int length_now)}}

}int main()

單詞接龍 DFS

原題鏈結 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲。現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞最多被使用兩次。在兩個單詞相連時,其重合部分合為一部分,例如 beast 和 astonish 如果接成一條龍則變為 beastonish。我們可以任意選...

CODEVS 1018 單詞接龍(DFS)

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

Codevs 1018 單詞接龍 (DFS)

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