洛谷P1019單詞接龍(dfs string應用)

2021-09-26 07:37:29 字數 1059 閱讀 6985

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

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

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

輸入 #1

5

attouch

cheat

choose

tact

a

輸出 #1

23
(連成的「龍」為atoucheatactactouchoose)

第一眼就感覺是dfs(以後試試尤拉圖能不能寫)

寫了之後發現這題其實是string方法的綜合應用。。。(手動黑臉)

這裡寫上所用的string方法的用法:

string::substr(int start=0,int lenth=nops)  會返回乙個從原字串下標為start開始長度為len的乙個子串(預設起始位置為0,預設長度為(unsigned)-1)

string::erase(int start,int len) 將原字串從下標為start的位置開始刪除len位

知道了這些剩下的就是dfs模擬了。。。

#include using namespace std;

string k[50];

int vis[50]=;

int n;

int serch(string a,string b)

string str;

cin>>str;

dfs(str);

cout

}

洛谷p1019 單詞接龍

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

洛谷p1019單詞接龍

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

洛谷 P1019 單詞接龍

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