題目描述
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」**現兩次),在兩個單詞相連時,其重合部分合為一部分,例如 beastbeast和astonishastonish,如果接成一條龍則變為beastonishbeastonish,另外相鄰的兩部分不能存在包含關係,例如atat 和 atideatide 間不能相連。
輸入輸出格式
輸入格式:
輸入的第一行為乙個單獨的整數nn (n \le 20n≤20)表示單詞數,以下nn 行每行有乙個單詞,輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。你可以假定以此字母開頭的「龍」一定存在.
輸出格式:
只需輸出以此字母開頭的最長的「龍」的長度
輸入輸出樣例
輸入樣例#1:5at
touch
cheat
choose
tact
a輸出樣例#1:
23說明
(連成的「龍」為atoucheatactactouchoose)
noip2000提高組第三題
ac_code:
#include
#include
#include
using namespace std;
struct str
data[30]
;int n,ans,len2;
char str[
3005];
char st;
intstrcp
(int cnt,
int next,
int len1)if(
strncmp
(str+c,data[next]
.s,len3)==0
)else
}return0;
}bool check
(int next,
int cnt)
int len1;
if(data[next]
.len < cnt)
else
len2 =
strcp
(cnt,next,len1);if
(len2)
return true;
return false;
}void
dfs(
int cnt)}if
(cnt > ans)
return;}
intmain()
scanf
(" %c"
,&st)
; ans =0;
dfs(0)
;printf
("%d\n"
,ans)
;return0;
}
P1019 單詞接龍(dfs)
題目描述 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的...
P1019 單詞接龍(DFS 回溯)
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbeast 和 astonishastonish 如果接成一條龍則變為 beast...
P1019 單詞接龍
洛谷 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部...