P1019 單詞接龍

2021-07-26 11:36:23 字數 968 閱讀 3230

洛谷

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

輸入格式:

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

輸出格式:

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

輸入樣例#1:

5

attouch

cheat

choose

tact

a

輸出樣例#1:

23           (連成的「龍」為atoucheatactactouchoose)

#include#include#include#includeusing namespace std;

int n,maxn,idx[25];

char first;

char word[25][100];

int lian[25][25];//0為不能連線,否則為能連線,最大連線長度

bool check(int i,int j,int pos,int l1,int l2) //檢查能否將i的後半部分與j的前半部分接起來

//這個lian是把j接在i後j的長度

} //break:貪心,接的部分越少則總長度越長

for(int i=1;i<=n;i++)if(word[i][0]==first)

cout<

P1019 單詞接龍

p1019 單詞接龍 首先需要找到任意兩個單詞的最小重合長度 從前面單詞的尾部比較,依次增加尾部選取長度,直至找到選取尾部和下乙個單詞頭部相同,就找到了最小重合長度。再通過dfs搜尋。includeusing namespace std int n,sum 0 char str 20 50 ch s...

P1019 單詞接龍

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

P1019 單詞接龍

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