題目描述:
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」中出現兩次),在兩個單詞相連時,其重合部分合為一部分,例如be
ast bea
st
和astoni
sha st
onis
h,如果接成一條龍則變為be
asto
nish
b ea
ston
is
h,另外相鄰的兩部分不能存在包含關係,例如at
a
t和 at
ide ati
de
間不能相連。
輸入輸出格式:
輸入:
輸入的第一行為乙個單獨的整數
n n
(n<20)表示單詞數,以下
n' role="presentation">n
n行每行有乙個單詞,輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。你可以假定以此字母開頭的「龍」一定存在。
輸出:
只需輸出以此字母開頭的最長的「龍」的長度
輸入輸出樣例
輸入:
輸出:5
attouch
cheat
choose
tact
a
23
解題思路:
注意兩點即可:
1)計算兩個字串前後的重複片段,並讓重複片段盡可能的短。如ab
abab
aba ba
baba
b和ab
abab
aba ba
baba
b的重複片段僅記為ab
a
b兩位。
2)其次深蒐時注意回溯。
#include
#include
#include
#include
using
namespace
std;
char strs[21][100];
int cnt[21];//初始化時直接為0
int totallen=0,n;
int linklen(char str1,char str2)
}if(flag)
return i;
}return
0;}
void solve(char str,int length)
}}int main(int argc, char** argv)
char st;
cin>>st;
for(int i=0;iif(strs[i][0]==st)
}printf("%d\n",totallen);
return
0;}
洛谷p1019 單詞接龍
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部分不能...
洛谷p1019單詞接龍
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbe ast 和 astonishas toni sh,如果接成一條龍則變為 be...
洛谷 P1019 單詞接龍
洛谷 p1019 單詞接龍 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbeast和astonishastonish,如果接成一條...