P1019 單詞接龍 DFS

2021-09-14 05:30:06 字數 1423 閱讀 9724

題目描述

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