單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞
且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」**現兩次)
在兩個單詞相連時,其重合部分合為一部分,例如beast和astonish,如果接成一條龍則變為beastonish
另外相鄰的兩部分不能存在包含關係,例如at和atide間不能相連。
輸入的第一行為乙個單獨的整數n(n≤20)表示單詞數
以下n行每行有乙個單詞(只含有大寫或小寫字母,長度不超過20)
輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。
你可以假定以此字母開頭的「龍」一定存在。
只需輸出以此字母開頭的最長的「龍」的長度。
輸入
5輸出 連成的「龍」為 atoucheatactactouchooseattouch
cheat
choose
tact
a
大致步驟
#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...