洛谷 P1019 單詞接龍

2021-08-27 16:06:01 字數 1562 閱讀 4552

題目描述:

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」中出現兩次),在兩個單詞相連時,其重合部分合為一部分,例如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,如果接成一條...