codevs 1018 單詞接龍

2021-07-28 07:46:31 字數 1271 閱讀 1230

題目描述 description

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」(每個單詞都最多在「龍」中出現兩次),在兩個單詞相連時,其重合部分合為一部分,例如beast和astonish,如果接成一條龍則變為beastonish,另外相鄰的兩部分不能存在包含關係,例如at和atide間不能相連。

輸入描述 input description

輸入的第一行為乙個單獨的整數n(n<=20)表示單詞數,以下n行每行有乙個單詞,輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。你可以假定以此字母開頭的「龍」一定存在.

輸出描述 output description

只需輸出以此字母開頭的最長的「龍」的長度

樣例輸入 sample input 5at

touch

cheat

choose

tact

a樣例輸出 sample output

23 資料範圍及提示 data size & hint

(連成的「龍」為atoucheatactactouchoose)

思路

n<=20 dfs

在檢查重合部分長度時,即cklen從1列舉到要min(拼接的單詞的長度,上次拼接的單詞長度),且不包含min(因為不能單詞包含單詞)

因為對於 abtt 和 ttab兩串,重合部分既可以看做t 也可以看做tt,因為長度要盡量長,所以我們選擇返回cklen=1而非cklen=2;

#include

#include

#include

#include

using

namespace

std;

bool can;

char dc[25][25],vis[25];

int ans,n;

int check(int be,int no)

if(can) return cklen;

}if(!can) return0;}

void dfs(int last,int tot)}}

else

for(int i=1;i<=n;i++)

}return ;

}int main()

scanf("%s",dc[0]);

dfs(0,1);

printf("%d",ans);

return

0;}

CODEVS 1018單詞接龍

新穎方法 hljs cpp include include using namespace std struct ag 25 25 int cut 25 vis 25 trytry,n,maxn 1 char a 25 20 b int catchdragon char x,char y,int m...

codevs1018單詞接龍

2000年noip全國聯賽普及組noip全國聯賽提高組 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解 題目描述 description 單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞...

CODE VS 1018 單詞接龍

題目描述 description單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 現兩次 在兩個單詞相連時,其重合部分合為一部分,例如beast和astonish,如果接成一條龍則變為beastoni...