單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」**現兩次),在兩個單詞相連時,其重合部分合為一部分,例如 beastbeast和astonishastonish,如果接成一條龍則變為beastonishbeastonish,另外相鄰的兩部分不能存在包含關係,例如atat 和 atideatide 間不能相連。
輸入的第一行為乙個單獨的整數nn (n \le 20n≤20)表示單詞數,以下nn 行每行有乙個單詞,輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。你可以假定以此字母開頭的「龍」一定存在.
只需輸出以此字母開頭的最長的「龍」的長度
輸入 #1複製
5輸出 #1複製attouch
cheat
choose
tact
a
23(連成的「龍」為atoucheatactactouchoose)
noip2000提高組第三題
深度優先搜尋
#include#include#include#include#include#include#includeusing namespace std;
int a[25];
string s[25];
char ch;
int res;
int b[25][25];
int tag[25];
void dsf(int n,int p,int& count)
for (int i = 1; i < b[p][0];i+=2) }
int main()
cin >> s[0];
for (int i = 0; i <=n; i++)}}
int tmp = b[i][0];
if (k > 0)
}} int count = 1;
dsf(n,0,count);
cout << res;
//system("pause");
return 0;
}
P1019 單詞接龍
洛谷 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部...
P1019 單詞接龍
p1019 單詞接龍 首先需要找到任意兩個單詞的最小重合長度 從前面單詞的尾部比較,依次增加尾部選取長度,直至找到選取尾部和下乙個單詞頭部相同,就找到了最小重合長度。再通過dfs搜尋。includeusing namespace std int n,sum 0 char str 20 50 ch s...
P1019 單詞接龍
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbeastbeast和astonishastonishastonish,如果接成一條龍...